sql - 在 SQL Server 中将总计值拆分为两列
问题描述
我试图在我的查询中将“总计”值拆分为两列,但这样做是通过在结果中保留一行来实现的。我目前正在使用两个不同的CASE
语句来执行此操作,但最终会为每个结果创建两行 - 每行包含一个NULL
. 有没有办法做到这一点,只返回一行结果,总和按指定的条件分开?
例如,我有一种材料,其数量“空白数量”为 38 个单位,“未覆盖数量”为 8 个单位,总共 46 个。我想在一行中看到这个 - 但使用下面的代码我得到两个此材料的行 - 每种类型的数量一个。我已经调查过了PIVOT
,但似乎不会奏效。
CASE
WHEN MRP.STOCK_TYPE = 'A'
THEN SUM(MRP.QUANTITY)
END AS 'Uncovered Qty',
CASE WHEN MRP.STOCK_TYPE <> 'A'
THEN SUM(MRP.QUANTITY)
END AS 'Blank Qty'
返回:
一行的值为“未覆盖的数量”= NULL 和“空白数量”= 38 一行的值为“未覆盖的数量”= 8 和“空白数量”=NULL
有没有办法让它在一行中返回并避免NULL
解决方案
您可以将条件带入SUM
s ,这将在一行中为您提供两个值:
SUM (CASE WHEN MRP.STOCK_TYPE = 'A' THEN MRP.QUANTITY ELSE 0 END) AS 'Uncovered Qty',
SUM (CASE WHEN MRP.STOCK_TYPE <> 'A' THEN MRP.QUANTITY ELSE 0 END) AS 'Blank Qty'