2017-09-13 78 views
1

我正在查看一個新的列,它將包含一列原始數據與case語句結果的總和。TSQL用case case語句的結果總計一列

實施例:

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

當然... ...但你並不需要一個case語句。

select 
    * 
    ,Combined = StandardCost + AddOn 
from 
    YourTable 

如果你真的需要一個case語句,它會像...

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

謝謝,花了我幾分鐘的時間來理解你的簡單佈局如何在案例陳述中實現它。愛它!!我所做的是每當我添加> + [StandardCost] – SidCharming

+0

沒有問題@SidCharming – scsimon