在Sql Server中聚合重复行

时间:2014-08-07 07:55:24

标签: sql-server-2008-r2

我有一张如下表格。

SuppID   AreaID     SuppNo   SupName    SupPrice
------------------------------------------------
1        3            526    ANC         100 
1        3            985    JTT         200
3        4            100    HIK         300 

在上表中。对于相同的SuppID(1)和相同的AreaID(3),存在不同的SuppNo(526& 985)。

当这种情况发生时,我想将前两行放入一行,SuppNo字段为空白。

此外,我的输出结果应显示所有列。

任何帮助?

1 个答案:

答案 0 :(得分:2)

它确实是一个简单的聚合,使用COUNT来确定如何处理SuppNo

SELECT
    SuppID, AreaID,
    COUNT(*) AS DupeCount, --added after comment
    CASE WHEN COUNT(*) > 1 THEN NULL ELSE MAX(SuppNo) END
FROM
    (
    VALUES (1, 3, 526), (1, 3, 985), (3, 4, 100)
    ) AS MyTable (SuppID, AreaID, SuppNo)
GROUP BY
    SuppID, AreaID;