Group By Age从出生日期SQL Server计算得出

Wil*_*ill 1 sql sql-server group-by

我试图显示每个年龄的计数,这是根据出生日期列计算的,但问题是它只会按出生日期分组,因此显示了很多重复的年龄.这是我的查询:

SELECT 
    DATEDIFF(hh, p.p_dob, GETDATE())/8766 AS Age,
    COUNT(DISTINCT s.s_studentreference) AS 'Count'    
FROM 
    moduleenrolment e
INNER JOIN 
    module m ON m.m_id = e.e_module
INNER JOIN 
    person p ON p.p_id = e.e_student
INNER JOIN 
    student s ON s.s_id = p.p_id
WHERE 
    m.m_reference LIKE '11%'
    AND LEN(m.m_reference) <= 12
    AND e.e_status IN ('A', 'W', 'C')
GROUP BY 
    p.p_dob
ORDER BY 
    p.p_dob DESC
Run Code Online (Sandbox Code Playgroud)

这是结果的样本

12  1
13  1
14  1
14  1
14  1
14  1
14  1
14  1
14  1
14  1
14  1
Run Code Online (Sandbox Code Playgroud)

我在寻找的是

12 1
13 1
14 9
Run Code Online (Sandbox Code Playgroud)

Lit*_*les 5

分组依次DATEDIFF(hh, p.p_dob, GETDATE())/8766代替p.p_dob

通过分组p.p_dob,您可以根据独特的出生日期而不是计算出的年龄进行分组.