在下表中,我有一个id字段名称字段和DateofBirth。 dateofbirth的数据类型是'date'。
在表格中,Alen& Krizte的DateOfBirth是相同的(用蓝色标记)。
http://s24.postimg.org/j2wsw3r11/123.jpg (请不要编辑这个,我意外地把另一张桌子也有两个相似的日期分娩,我在另一张桌子里幸运而且斯图尔特有同样的dob)
现在我的问题是这个。我想回复在同一天过生日的人的名字,就像我之前说过的那样。 &安培;我使用sql server 2008
我也想知道,如果表中有多个这样的实例,那我们怎么能找到呢?我的英语不是很好,如果你有任何问题,那么问我,我会试着解释一下.. !!希望你明白我刚刚解释的内容。
答案 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
-----------------------