簡體   English   中英

根據另一列的值創建新列

[英]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.

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