我正在尝试计算数据库中事件记录从当前日期到可能的过去日期的年龄。 这是可能的输出:
15岁至24岁
12
24岁至30岁
15
30岁及以上
25
并计算年龄
age count
15 3
16 5
17 1
18 2
19 1
20 0
.... ....
最佳答案
要计算年龄:
;With Ages
AS
(
SELECT CASE
WHEN MONTH(getdate()) > MONTH([YourDate]) THEN DATEDIFF(YEAR, [YourDate], getdate())
WHEN Month([YourDate]) = MONTH(Getdate()) AND Day([YourDate]) < Day(getdate())
THEN DATEDIFF(YEAR, [YourDate], getdate())
ELSE DATEDIFF(YEAR, [YourDate], getdate()) - 1 END As Age
FROM #YourTable
)
SELECT Age, count(*) AS [Count]
FROM Ages
GROUP BY Age
并获取日期范围计数:
;With Ages
AS
(
SELECT CASE
WHEN MONTH(getdate()) > MONTH([YourDate]) THEN DATEDIFF(YEAR, [YourDate], getdate())
WHEN Month([YourDate]) = MONTH(Getdate()) AND Day([YourDate]) < Day(getdate())
THEN DATEDIFF(YEAR, [YourDate], getdate())
ELSE DATEDIFF(YEAR, [YourDate], getdate()) - 1 END As Age
FROM #YourTable
),
AgeCount
AS
(
SELECT Age, count(*) AS [Count]
FROM Ages
GROUP BY Age
)
SELECT SUM(CASE WHEN Age >= 15 and Age < 24 THEN 1 ELSE 0 END) As [15-24],
SUM(CASE WHEN AGE >= 25 AND Age < 30 Then 1 ELSE 0 END) As [25-30],
SUM(CASE WHEN AGE > 30 THEN 1 ELSE 0 END) AS [Over 30]
From AgeCount
关于sql-server - SQL 计数两个日期范围之间的年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095257/