每个年龄组和COUNT个成员的SQL选择

时间:2014-01-29 16:38:05

标签: sql sql-server

我有以下表格

[会员]

MemberID   DOB              Name
------------------------------------
1          01/01/2000       Jon
2          01/01/2005       Bob
3          01/01/2009       Mike
4          01/01/1980       Greg

[AgeGroups]

GroupID      GroupTitle       MinAge    MaxAge
--------------------------------------------------
1            GroupA      0         5
2            GroupB      6         10
3            GroupC      11        18

[事件]

EventID      EventStart
---------------------------
1            01/01/2015

我希望能够执行一个SQL选择命令,该命令获取组标题,并且在EventStart日期,年龄将在每个年龄组的年龄范围内的成员数量计数。

GroupTitle       MemberCount
----------------------------------
GroupA           1
GroupB           2
GroupC           1

我一直试图用SELECT CASE WHEN做这个但是卡住了。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

查看Date and Time Data Types and Functions,特别是DATEDIFF功能。

您可以尝试以下内容:

SELECT AgeGroups.GroupID, AgeGroups.GroupTitle, COUNT(1) AS MemberCount
FROM AgeGroups
JOIN Events ON EventID = 1
JOIN Members 
ON DATEDIFF(year, Members.DOB, Events.EventStart) >= AgeGroups.MinAge
AND DATEDIFF(year, Members.DOB, Events.EventStart) <= AgeGroups.MaxAge
ORDER BY AgeGroups.GroupID

这有帮助吗?