我有以下表格
[会员] :
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做这个但是卡住了。
非常感谢任何帮助!
答案 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
这有帮助吗?