2017-04-30 14 views
3
ALTER TABLE table_1 
ADD [calc_column] AS 
(
     CASE 
     WHEN ([payment_1] IS NULL 
      AND [payment_2] IS NULL 
      AND [payment_3] IS NULL 
      AND [payment_4] IS NULL 
      AND [payment_5] IS NULL 
      AND [payment_6] IS NULL) 
     THEN NULL 
     ELSE (COALESCE([payment_1],(0)) + COALESCE([payment_2],(0)) + 
      CASE 
      WHEN (COALESCE([payment_3],(0)) + COALESCE([payment_7],(0)) + COALESCE([payment_4],(0)) > COALESCE([payment_5],(0))) 
      THEN (COALESCE([payment_1],(0)) + COALESCE([payment_4],(0)) + COALESCE([payment_3],(0))) 
      ELSE (COALESCE([payment_8],(0))) END) AS DECIMAL(13,2) 
+1

列名は無実を保護するために変更されました。それはカッコで問題です。データ型は小数点以下(13,2)とされていますが、これを除外してもエラーは発生します。 – LJQ

答えて

3

多くのエラーがあります。括弧がアンバランスであり、casesにはendがありません。また、型を指定する必要はありません。

だから、私はこれがうまくいくと思う:

ALTER TABLE table_1 
    ADD [calc_column] AS (CASE WHEN [payment_1] IS NULL AND 
            [payment_2] IS NULL AND 
            [payment_3] IS NULL AND 
            [payment_4] IS NULL AND 
            [payment_5] IS NULL AND 
            [payment_6] IS NULL 
           THEN NULL 
           ELSE COALESCE([payment_1], 0) + COALESCE([payment_2], 0) + 
            (CASE WHEN COALESCE([payment_3], 0) + COALESCE([payment_7], 0) + COALESCE([payment_4], 0) > COALESCE([payment_5], 0) 
              THEN COALESCE([payment_1], 0) + COALESCE([payment_4], 0) + COALESCE([payment_3], 0) 
              ELSE COALESCE([payment_8], 0) 
            END) 
         END); 
+0

美しい.....ありがとうGL。 – LJQ

関連する問題