Sql server 2008 r2 在Sql Server中聚合重复行

Sql server 2008 r2 在Sql Server中聚合重复行,sql-server-2008-r2,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   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字段为空

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


有什么帮助吗?

这真的是一个简单的聚合,使用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;

您是要更改表中的基础数据,还是在为特定查询选择此数据时仅执行此合并?我希望在执行Select时进行此更改Query@Osceria:请接受这个答案,然后在左边打勾。谢谢如果我需要SuppID和AreaID相同的计数,如何获取它?@Osceria:add count(*)作为输出我试图在变量中获取该计数。但是如果我在表中有很多列,但是输出结果集应该显示所有列的行,并根据一个列删除重复项,这是错误的,正如你上面回答的那样?