TSQL分组问题

时间:2017-09-07 08:59:02

标签: tsql

我已经获得了一个TSQL表,其摘录在

之下
Serial Number   Code 1  Code 2   Code 3
15872           1242    NULL     NULL
15872           NULL    558      222
99955           995     452      NULL

我想将这四个字段组合在一起以形成以下输出

Serial Number   Code 1  Code 2   Code 3
15872           1242    558      222
99955           995     452      NULL

这看起来很简单,但我无法做到。任何建议都将非常感谢!

亲切的问候,

DJ

2 个答案:

答案 0 :(得分:0)

您需要将聚合函数与Coalesce函数结合使用,如下所示:

select Serial , COALESCE(SUM(code1),0),COALESCE(SUM(code2),0),COALESCE(SUM(code3),0)
from yourTable
group by Serial

这基本上将NULL替换为0,以便您可以按预期计算SUM

希望这有帮助!

答案 1 :(得分:0)

哦......误读了两次问题,哈哈。

CREATE TABLE #X
(
    SerialNumber INT
    , Code1 INT
    , Code2 INT
    , Code3 INT
)
INSERT INTO #X
VALUES
    (15872, 1242, NULL, NULL)
    , (15872, NULL, 558, 222)
    , (99955, 995, 452, NULL)

SELECT
    [SerialNumber]
    , MAX([Code1]) AS [Code1]
    , MAX([Code2]) AS [Code2]
    , MAX([Code3]) AS [Code3]
FROM #x
GROUP BY [SerialNumber]

现在,您还没有提及有关聚合的任何内容,所以这假设只有一行可能具有该值,即不存在:

Serial Number   Code 1  Code 2   Code 3
15872           1242    773      NULL
15872           NULL    558      222