Sql server 2008 r2 删除重复项

Sql server 2008 r2 删除重复项,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字段为空

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


有什么帮助吗?

这将帮助您开始:

 DECLARE @TABLE TABLE (SuppID INT, AreaID INT, SuppNo VARCHAR(5), SupName VARCHAR(5), SupPrice INT)
INSERT INTO @TABLE
SELECT 1,3,'526','ANC',100 UNION
SELECT 1,3,'985','JTT',200 UNION
SELECT 3,4,'100','HIK',300 

-- select data before updates
SELECT * FROM @TABLE

-- add a row count by AreaID/SuppID
;WITH T1 AS
(
SELECT *
       ,SUM(1) OVER(PARTITION BY AREAID,SUPPID) AS ROWCNT
FROM @TABLE
)

-- set the SuppNo blank on rows that have more than 1 match
UPDATE T1 SET SuppNo='' WHERE ROWCNT>1

-- add a row # by AreaID/SuppID
;WITH T2 AS 
(
SELECT *
       ,ROW_NUMBER() OVER(PARTITION BY AREAID,SUPPID ORDER BY AREAID,SUPPID) AS ROWID
FROM @TABLE
)

-- delete duplicate rows    
DELETE 
FROM T2
WHERE ROWID>1

-- select data after updates    
SELECT * FROM @TABLE