我有一個多列的表,比如
ID 號、快照日期、月份名稱和來源。(還有很多列)
我想洗掉源為 (V2) 的行,但僅如果對于某個 ID 號、日期和月份,源中存在兩個值 (V1) (V2)
Source 還可以包含其他值(V3、V4 等)
我似乎無法找到一種方法來在 SSMS 的存盤程序中對此進行編碼,任何人都可以提供幫助?
我基本上想洗掉源 V2 的每一行,如果對于每個唯一的鍵 C,鍵 F 和鍵 G(組合)同時存在 V1 和 V2。 伊古爾照片
uj5u.com熱心網友回復:
您可以將 IN 用于 V2、V3 和 V4 等源的多個值。示例資料可能會有所幫助,但您可以撰寫如下查詢;
DELETE FROM [TABLE_NAME]
WHERE
source IN ('V2', 'V3', 'V4')
AND ID = 10
AND Date = '2021-10-10';
uj5u.com熱心網友回復:
您基本上想要執行 IF EXISTS THEN DELETE 查詢。還有另一種方法可以解決這個問題,如下所示。為了解釋一下,您只需動態創建一個條目表,該表匹配您的所有條件,并在連接成功時執行洗掉操作。
DELETE
FROM TABLE tab
INNER JOIN (SELECT *
FROM TABLE tab
WHERE tab.ID = Your_Number
AND tab.SnapshotDate = Your_Date
AND tab.MonthName = Your_Month_Name
AND Source IN (V1, V2)
) joinCondition ON tab.ID = joinCondition.ID
WHERE tab.ID = Your_Number
AND tab.SnapshotDate = Your_Date
AND tab.MonthName = Your_Month_Name
AND Source = V2
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/354042.html
標籤:sql sql-server 查询语句
上一篇:如何限制記錄
下一篇:從1行3列制作3行1列
