首页 > 解决方案 > 在 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

标签: sqlsql-servercase

解决方案


您可以将条件带入SUMs ,这将在一行中为您提供两个值:

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'

推荐阅读