我正在尝试更新销售分析多维数据集中的以下查询段。我对SQL不太熟悉。
第一个CASE语句的工作原理是--当OINV.Canceled = 'Y‘时返回一个负数。
CASE OINV.Canceled WHEN 'Y' THEN - INV1.LineTotal
ELSE INV1.LineTotal END AS LineTotal,
CASE INV1.StockSum WHEN 0 THEN INV1.LineTotal
ELSE INV1.StockSum END AS SaleValue, INV1.GrssProfit我试图实现的是,当SaleValue= 'Y‘时,第二个CASE语句也返回一个负值( OINV.Canceled )。我想我需要在这里嵌套一个案例陈述,但我不确定。
发布于 2015-07-09 08:38:27
有案例表达式的两种格式。简单的案例和搜索的案例。您可以使用已搜索的案例表达式来完成此操作。
CASE WHEN OINV.Canceled = 'Y' THEN -INV1.StockSum
WHEN INV1.StockSum = 0 THEN INV1.LineTotal
ELSE INV1.StockSum
END AS SaleValue或者可能是(取决于您的需求)
CASE WHEN OINV.Canceled = 'Y' AND INV1.StockSum = 0 THEN -INV1.LineTotal
WHEN OINV.Canceled = 'Y' AND INV1.StockSum <> 0 THEN -INV1.StockSum
ELSE INV1.StockSum
END AS SaleValue或者一个嵌套的案子。在这里,您必须对OINV.Canceled的不同值重复子case表达式。
CASE OINV.Canceled WHEN 'Y' THEN
-1 * CASE INV1.StockSum WHEN 0 THEN INV1.LineTotal
ELSE INV1.StockSum END
ELSE
CASE INV1.StockSum WHEN 0 THEN INV1.LineTotal
ELSE INV1.StockSum END
END AS SaleValue发布于 2015-07-09 08:38:22
试试这个:
CASE
When OINV.Canceled = 'Y' THEN INV1.LineTotal *(-1)
ELSE INV1.LineTotal
END AS LineTotal,
CASE
When INV1.StockSum = 0 THEN INV1.LineTotal
ELSE INV1.StockSum
END AS SaleValue,
INV1.GrssProfithttps://stackoverflow.com/questions/31312214
复制相似问题