SQL嵌套CASE语句
我正在尝试更新Sales Analysis多维数据集中的以下查询段。我对SQL不是很熟悉 第一个CASE语句按它应该的方式工作-当OINV.cancelled='Y'时返回负数SQL嵌套CASE语句,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试更新Sales Analysis多维数据集中的以下查询段。我对SQL不是很熟悉 第一个CASE语句按它应该的方式工作-当OINV.cancelled='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 A
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
我试图实现的是,当OINV.cancelled='Y'时,第二个CASE语句也返回一个负值(SaleValue)。我想我需要在这里嵌套一个案例陈述,但我不确定 试试这个:
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.GrssProfit
有。简单案例和搜索案例。
可以使用已搜索的大小写表达式执行此操作
CASE WHEN OINV.Canceled = 'Y' THEN -INV1.StockSum
WHEN INV1.StockSum = 0 THEN INV1.LineTotal
ELSE INV1.StockSum
END AS SaleValue
也可以是(取决于您的要求)
我认为您省略了,例如,
OINV.cancelled='Y'和INV1.StockSum=0
。谢谢,这差不多就是它。我不得不在CASE语句中添加第三个条件,但就是这样:当OINV.cancelled='N'和INV1.StockSum=0时,则是INV1.LineTotal
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
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