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(*)作为输出我试图在变量中获取该计数。但是如果我在表中有很多列,但是输出结果集应该显示所有列的行,并根据一个列删除重复项,这是错误的,正如你上面回答的那样?