查找带有计数的重复行
假设有一个表
ID Name Age
-----------------
1 Jon 30
2 Skeet 30
1 Jon 30
4 Gravell 30
5 NULL 30
4 Gravell 30
5 NULL 30
7 James 40
必需输出(NULL也应具有可比性)
ID Name Age Description
----------------- -----------
1 Jon 30 Found 1
1 Jon 30 Found 2
4 Gravell 30 Found 1
4 Gravell 30 Found 2
5 NULL 30 Found 1
5 NULL 30 Found 2
7 James 40 Found 1
2 Skeet 30 Found 1
为了查找重复项,我可以执行查询
select ID,Name,Age from tableA group by ID,Name,Age having count(*) >1
如何生成说明?
答案 0 :(得分:1)
试试这个 -
select ID,Name,Age, ('Found ' + cast(count(*) as varchar(5))) as description
from tableA group by ID,Name,Age having count(*) >1
答案 1 :(得分:1)
SELECT
ID, Name, Age,
'Found ' + CAST(ROWNUMBER() OVER (PARITION BY Name ORDER BY ID) AS varchar(10)) AS Description
FROM
MyTable
ORDER BY
ID, Description
您所需的输出顺序在ID /名称级别基本上是随机的
查找重复项...
SELECT
ID, Name, Age, 'Found ' + Countof AS Description
FROM
(
SELECT
ID, Name, Age,
CAST(ROWNUMBER() OVER (PARITION BY Name ORDER BY ID) AS varchar(10)) AS Countof
FROM
MyTable
) foo
WHERE
Countof > 1