返回重复列值

时间:2013-12-02 19:58:08

标签: sql-server sql-server-2008 duplicates

在下表中,我有一个id字段名称字段和DateofBirth。 dateofbirth的数据类型是'date'。

在表格中,Alen& Krizte的DateOfBirth是相同的(用蓝色标记)。

http://s24.postimg.org/j2wsw3r11/123.jpg (请不要编辑这个,我意外地把另一张桌子也有两个相似的日期分娩,我在另一张桌子里幸运而且斯图尔特有同样的dob)

现在我的问题是这个。我想回复在同一天过生日的人的名字,就像我之前说过的那样。 &安培;我使用sql server 2008

我也想知道,如果表中有多个这样的实例,那我们怎么能找到呢?我的英语不是很好,如果你有任何问题,那么问我,我会试着解释一下.. !!希望你明白我刚刚解释的内容。

1 个答案:

答案 0 :(得分:0)

SQL2005 +

SELECT src.*
FROM
(
    SELECT p.Id, 
        p.Name, 
        p.DateOfBirth, 
        COUNT(*) OVER(PARTITION BY p.DateOfBirth) AS CountPerDateOfBirth
    FROM dbo.Person p
) src
WHERE src.CountPerDateOfBirth > 1

注意#1:我使用COUNT函数和OVER clause(需要SQL2005分钟)。

注意#2:PARTITION BY p.DateOfBirth会根据DateOfBirth值将源行(dbo.MyTable)拆分为多个组(17-07-1976,13-​​01-1978,26-04- 1982年,26-04-1988):

-----------------------
1, Alen, 17-07-1976
4, Krizte, 17-07-1976
-----------------------
3, Sona, 13-01-1978
-----------------------
5, Lucky, 26-04-1982
-----------------------
2, Stuart, 26-04-1988
-----------------------
每个群组的

COUNT(*)将......计算行数:

-----------------------
1, Alen, 17-07-1976,  2
4, Krizte, 17-07-1976,2
-----------------------
3, Sona, 13-01-1978  ,1
-----------------------
5, Lucky, 26-04-1982 ,1
-----------------------
2, Stuart, 26-04-1988,1
-----------------------