2017-09-13 13 views
1

生データのカラムとケースステートメントの結果の合計を含む新しいカラムを作成します。TSQLはケースステートメントの結果とカラムを合計します

例:

SKU  StandardCost   AddOn  Combined 
---   ------------   -----  -------- 
001   0.578271    0.040194 0.618465 
070   0.290721    0.039425 0.330146 
223   0.446990    0   0.446990 

AddOn列はcase文に基づいて計算されたフィールドです。私のコード内にCombinedの列を作成したいのですが可能ですか?

ありがとうございます!

select 
    ItemKey as 'Product Number', 
    ltrim(Rtrim([ItemKey]))+'_'+ltrim(rtrim([Plant]))+'_'+ltrim(rtrim([Location])) as 'Key', 
    [Item Desc] as 'Product Description', 
    Plant as 'Location', 
    [Location] as 'Warehouse', 
    StandardCost as 'Variable Cost', 
    --Add on costing 
    CASE 
    WHEN subString(ItemKey,1,4) = '3121' AND subString(ItemKey,10,3) = '010' then ((SELECT -- Calculating Tanker pricing for WE *NP product (Pas & Raw) 
                StandardCost 
               FROM 
                Standard_Cost 
               WHERE 
                Year=2099 --Standard Cost Variable filter 
                and ItemKey = '3121-000-010-001' 
                and [Location] = 'DNEO')- 
                (SELECT 
                StandardCost 
               FROM 
                Standard_Cost 
               WHERE 
                Year=2099 
                and ItemKey = '2121-000-010-001' 
                and [Location] = 'DNEO')) 

    WHEN subString(ItemKey,1,4) = '3141' AND subString(ItemKey,10,3) = '010' then ((SELECT -- Calculating Tanker pricing for Yolk egg product (Pas & Raw) 
                StandardCost 
               FROM 
                Standard_Cost 
               WHERE 
                Year=2099 --Standard Cost Variable 
                and ItemKey = '3141-000-010-001' 
                and [Location] = 'DNEO')- 
                (SELECT 
                StandardCost 
               FROM 
                Standard_Cost 
               WHERE 
                Year=2099 
                and ItemKey = '2141-000-010-001' 
                and [Location] = 'DNEO')) 

    WHEN subString(ItemKey,1,4) = '3181' AND subString(ItemKey,10,3) = '010' then ((SELECT -- Calculating Tanker pricing for Albumen (White) egg product (Pas & Raw) 
                StandardCost 
               FROM 
                Standard_Cost 
               WHERE 
                Year=2099 --Standard Cost Variable 
                and ItemKey = '3181-000-010-001' 
                and [Location] = 'DNEO')- 
                (SELECT 
                StandardCost 
               FROM 
                Standard_Cost 
               WHERE 
                Year=2099 
                and ItemKey = '2181-000-010-001' 
                and [Location] = 'DNEO')) 
    ELSE 0 
    END as 'Add On' 
FROM 
    Standard_Cost 

WHERE 
    [YEAR] = 2099 --2099 defines variable cost, 2017 or current year is standard cost 
    AND substring(ItemKey,4,1) <> '6' --OES products are not to show in the list 
    AND [Location] in ('AREM', 'AWAME', 'AWCHE', 'AWLEM', 'FABB') -- selected locations to display 
ORDER BY 
    1 ASC, 
    2 ASC 
+0

あなたは上記の出力を生成するために使用するコードを投稿してください。 – smj

答えて

1

確かに、私は私が働いている私のコードを更新しています

ロブ=)... ...しかし、あなたはケース文を必要としません。

select 
    * 
    ,Combined = StandardCost + AddOn 
from 
    YourTable 

あなたが実際にcase文を必要に応じて、それのようになります...

select 
    * 
    ,Combined = case when someColumn = 'someThing' then StandardCost + AddOn end 
from 
    YourTable 
+1

ありがとう、あなたのシンプルなレイアウトを理解するには、case文の中でそれをどうやって行うのか、私には数分かかりました。大好きです!!私がしたのは、私が追加したときの各ステートメントであった> + [StandardCost] – SidCharming

+0

問題なし@SidCharming – scsimon