Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL嵌套CASE语句_Sql_Sql Server_Tsql - Fatal编程技术网

SQL嵌套CASE语句

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

我正在尝试更新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 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