我可以得到我的CASE声明的产品吗?

时间:2018-12-05 23:23:37

标签: sql-server

我必须将CASE语句的结果相乘。 理想的方式是什么?

我的CASE语句是:

CASE
   WHEN dbo.ItemSpecs.ConfigProptext LIKE 'Coco Chair%' THEN (CEILING(dbo.WorkOrderDetails.QtyOrdered / 4)) 
   WHEN dbo.ItemSpecs.ConfigProptext LIKE 'Cruise Bar%' THEN (CEILING(dbo.WorkOrderDetails.QtyOrdered / 4)) 
   ELSE dbo.WorkOrderDetails.QtyOrdered 
END AS NumberofCartons

所有查询的结果均应乘以0.25,然后应创建一个名为Goods Cubic Column的新列。

可以请教吗?

1 个答案:

答案 0 :(得分:1)

将CASE表达式移至from子句中的CROSS APPLY,将使其别名可用于SELECT列表中的引用。 类似于以下内容的东西应该可以满足您的需求...

SELECT 
    nc.NumberofCartons,
    Goods_Cubic_Column = nc.NumberofCartons * 0.25
FROM
    dbo.ItemSpecs isp
    JOIN dbo.WorkOrderDetails wod
        ON isp.??? = wod.???
    CROSS APPLY ( VALUES (
                        CASE
                           WHEN isp.ConfigProptext LIKE 'Coco Chair%' THEN (CEILING(wod.QtyOrdered / 4)) 
                           WHEN isp.ConfigProptext LIKE 'Cruise Bar%' THEN (CEILING(wod.QtyOrdered / 4)) 
                           ELSE wod.QtyOrdered 
                        END )
                    ) nc (NumberofCartons);