计数基于年龄SQL
问题描述:
我有以下的T-SQL来计算年龄:计数基于年龄SQL
SELECT
Member_ID,
DATEDIFF(YY,DOB,GETDATE()) -
CASE
WHEN DATEADD(YY,DATEDIFF(YY,DOB,GETDATE()),DOB) > GETDATE() THEN 1
ELSE 0
END AS Age in Years
FROM MEMBER
WHERE YEAR(registration_date) >= 2012
如何计算成员ID的每个年龄段的年数?
答
事情是这样的:
SELECT
-- Member_ID, commented out
DATEDIFF(YY,DOB,GETDATE()) -
CASE
WHEN DATEADD(YY,DATEDIFF(YY,DOB,GETDATE()),DOB) > GETDATE() THEN 1
ELSE 0
END AS Age in Years
, count(member_id) membersWithThisAge
FROM MEMBER
WHERE YEAR(registration_date) >= 2012
group by DATEDIFF(YY,DOB,GETDATE()) -
CASE
WHEN DATEADD(YY,DATEDIFF(YY,DOB,GETDATE()),DOB) > GETDATE() THEN 1
ELSE 0
END
的member_id不能包括选择子句。如果是这样,那么你会得到每个成员一个年龄的计数。
+0
谢谢丹,那太好了。 – nk10 2014-08-31 23:30:35
答
我会这样做使用子查询或CTE。更容易遵循:
SELECT AgeInYears, COUNT(*)
FROM (SELECT Member_ID,
(DATEDIFF(YY,DOB,GETDATE()) -
CASE WHEN DATEADD(YY,DATEDIFF(YY,DOB,GETDATE()),DOB) > GETDATE() THEN 1
ELSE 0
END) AS AgeinYears
FROM MEMBER
WHERE YEAR(registration_date) >= 2012
) m
GROUP BY AgeInYears
ORDER BY 1;
您是否尝试过使用计数? http://www.w3schools.com/sql/sql_func_count.asp – 2014-08-31 23:14:49
我该放什么?谢谢。 – nk10 2014-08-31 23:17:07
@Bennef [请不要使用w3schools作为参考。](http://www.w3fools.com) – Kermit 2014-08-31 23:22:18