2012-04-05 50 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