簡體   English   中英

SQL如果沒有行,則插入行

[英]SQL if there is no row, insert row

前言:我有一個查詢,可根據他們的目標提取銷售數據和度量。 問題在於,只有給定月份銷售商品的人才會出現在圖表上。 最終,每個人​​都獲得了一筆交易並獲得了成功。 為了緩解此問題,我創建了第二條語句,該語句分配了一個虛擬數據行(用作占位符),並將datepart(M,SOLD_DATE)=設置為datepart(M,getdate()),以便從第一個開始在板上。

我的問題:當人們被添加到董事會中時,如何設置它以刪除占位符?

SELECT
    USER_ID,
    SOLD_DATE,
    DATEPART(M, SALE_ID)
    **Target Case Statement in a nutshell**:
    insert monthly target value to 1st instance of sold item
    else 0
    End as 'target_amt' -- this is summed and aggregated in excel chart.
FROM 
   Sales

UNION ALL

SELECT    
    USER_ID,
    DATEPART(M, getdate()) as SOLD_DATE,
    Sale_ID,
    TARGET_AMT,
FROM 
    Sales
WHERE
    Sale_ID = **this contains on made up sale_id per person as a place holder.

因此,您可以看到,從每個月1日起, UNION語句將為每個人添加一個項目。 現在的問題是當有人進行銷售時如何將其刪除。

我在想某種帶有“不在”或“除外”的子查詢。 或涉及案件陳述的事情???

我會發布完整的查詢,但它是一個野獸(8頁),並使用一些CTE來得出頂部的select語句。

您應該從“用戶”表中進行選擇,並保留對您的銷售表的聯接。 通過這樣做,它解決了最初的問題,即用戶未售出商品時卻沒有出現。

我同意SpectralGhost的觀點-解決此問題的最佳方法是更改​​原始查詢的選擇條件,以使其包括兩個表的聯接-沒有銷售的人將顯示空條目。

但是,如果您想用困難的方式做到這一點,那么當添加了其他銷售記錄后,如果存在一個簡單的if就足以檢查並刪除虛擬記錄。 或者您是說要在添加銷售的語句中檢查,添加虛擬記錄或刪除虛擬記錄(如果它們已存在但正在添加銷售)? 似乎想向我施加壓力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM