[英]Create new column based on values of another column
我是SQL的新手,大多數時候我都使用R。 但是要求是我在SQL中實現
我在MS SQL中有一張表,其中每一行都是一個“活動類型”,其值為“ A”,“ B”或“ C”。 我總共有40列,我需要檢查每一行數據是否正確。 下面的一個小示例很少有專欄。
規則是,如果“活動類型”為“ A”,則所有MonitorA_
列都應有一個值,其他所有內容都應為NULL。 如果活動類型為“ B”,則所有MonitorB_列均應有一個值,其余所有均應為NULL
在下面的示例中,第1行和第2行很好。 但是第3行和第4行有問題。 即在第3行中,活動類型為“ B”,但“ MonitorC_ID”列中有一個值。
我希望能夠根據其是否通過測試來創建一個值為True或False的新列。
| Activity Type | MonitorA_ID | MonitorA_Date | MonitorA_Region | MonitorB_ID | MonitorB_Date | MonitorB_Region | MonitorC_ID | MonitorC_Date | MonitorC_Region |
|---------------|-------------|---------------|-----------------|-------------|---------------|-----------------|-------------|---------------|-----------------|
| B | NULL | NULL | NULL | 1 | 21/10/1985 | Brisbane | NULL | NULL | NULL |
| A | 45 | 25/03/1986 | Gold Coast | NULL | NULL | NULL | NULL | NULL | NULL |
| B | NULL | NULL | NULL | 67 | 13/03/1959 | Dubai | 45 | NULL | NULL |
| C | NULL | 13/08/1964 | NULL | NULL | NULL | NULL | 82 | 13/08/1964 | Dubai |
您可以為A,B或C列的每種類型創建一個檢查變量。這將為您提供3個新字段A_Chk,B_Chk和C_Chk。 如果它們是0,則行是好的,但是如果它們是1,則行是壞的。
要進入一個字段,您只需檢查3個chk字段的總和為零即可。
Select
CASE
WHEN [Activity Type] = 'A' THEN
CASE WHEN MonitorA_ID is NULL
OR MonitorA_Date is NULL
OR MonitorA_Region is NULL
THEN 1 ELSE 0 END
END as 'A_Chk'
From Table
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.