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