TSQL将一个列与案例陈述

时间:2017-09-13 21:19:40

标签: sql-server 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列...是否可能?

谢谢! Rob =)

我正在使用我正在处理的代码进行更新...

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

1 个答案:

答案 0 :(得分:1)

当然......但你不需要案例陈述。

select
   *
   ,Combined = StandardCost + AddOn
from
   YourTable

如果您确实需要案例陈述,那就像......

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