2012-04-05 71 views

回答

0
;WITH AgeGroups AS (
SELECT 
    CASE 
    WHEN FLOOR(DATEDIFF(DAY, DOB, GETDATE())/365.25 BETWEEN 20 AND 29 
     THEN '20 - 29' 
    WHEN FLOOR(DATEDIFF(DAY, DOB, GETDATE())/365.25 BETWEEN 30 AND 39 
     THEN '30 - 39' 
    END AS AgeGroup 
FROM YourTable 
) 
SELECT 
    AgeGroup, 
    COUNT(*) AS AgeGroupCount 
FROM AgeGroups 
GROUP BY AgeGroup 
+0

你真棒!感谢您的快速回复, Andy – 2012-04-05 22:28:01

+0

@andycicchillo希望它有帮助...如果这个答案或其他答案解决了您的问题,请[将其标记为已接受的答案](http://meta.stackexchange.com/问题/ 5234 /如何-不接受-的回答工作)。 – 2012-04-05 22:33:25

0

也许像这样将工作

SELECT SUM(case where DATEDIFF(YEAR, [dob], GETDATE()) between 20 and 29 then 1 else 0) AS 'Age_20_29', 
SUM(case where DATEDIFF(YEAR, [dob], GETDATE()) between 30 and 39 then 1 else 0) AS 'Age_30_39', 
[etc.] 
FROM myTbl