2017-06-06 14 views
1

私はSQLを初めて使いました。列のSUMが0より大きい場合、いくつかの列をSUMにする方法と、既存の列を1または0で更新する方法を理解しようとしています。 また、 NULL値に0の値が割り当てられるようにします。T-SQL更新クエリ

T-SQLで次のようにするにはどうすればよいですか?

if (select (coalesce(COL1, 0) + 
coalesce(COL2 0) + 
coalesce(COL3, 0) + 
coalesce(COL4, 0) + 
coalesce(COL5, 0) from SOMETABLE where X_CONDITION = 10) > 0) 
update SOMETABLE set ABC_COLUMN = 1 
    else 
    set ABC_COLUMN = 0; 

EDIT:

現在、表はやや次のようになります。

x_condition | col1 | col2 |col3| col4| col5| abc_column 
------------| -----| -----| ---| ----|-----|----------- 
    7  | 1 |  | |  |  | 0 (this in incorrect) 
    7  | 0 | 0 | | 0 |  | 0 (this is correct) 
    5  | 1 | 1 | |  |  | 0 (this is incorrect) 

私はabc_column固定したい - ほとんどの旗のように:

x_condition | col1 | col2 |col3| col4| col5| abc_column 
------------| -----| -----| ---| ----|-----|----------- 
    7  | 1 |  | |  |  | 1 
    7  | 0 | 0 | | 0 |  | 0 
    5  | 1 | 1 | |  |  | 1 

ありがとうございました!

+0

編集ご質問や、サンプルデータと希望reulstsを提供しています。 –

+0

@ GordonLinoff私が探しているものの簡単な例を提供しました。ありがとうございました! –

答えて

1

これは、いくつかの算術update文のように聞こえる:

update SOMETABLE 
    set ABC_COLUMN = (case when coalesce(COL1, 0) + coalesce(COL2 0) + 
           coalesce(COL3, 0) + coalesce(COL4, 0) + 
           coalesce(COL5, 0) > 0 
          then 1 else 0 
         end); 

あなたはかなりあなたのクエリですべての部分を持っています。

1

形式以下のように使用UPDATE文:

UPDATE SOMETABLE 
    SET ABC_COLUMN = CASE WHEN ISNULL(COL1,0) > 0 THEN 1 
         WHEN ISNULL(COL2,0) > 0 THEN 1 
         WHEN ISNULL(COL3,0) > 0 THEN 1 
         WHEN ISNULL(COL4,0) > 0 THEN 1 
         WHEN ISNULL(COL5,0) > 0 THEN 1 ELSE 0 END