没有分组的汇总数据

时间:2015-10-08 12:29:42

标签: count datediff

我试图创建一行数据,但是Group By子句让我搞砸了。

这是我的表:

RegistrationPK  :  DateBirth   : RegistrationDate

我试图在注册时获得人们的年龄。

我拥有的是:

SELECT 
CASE WHEN DATEDIFF(YEAR,DateBirth,RegistrationDate) < 20 THEN COUNT(registrationpk) END AS Under20
FROM dbo.Registration r
GROUP BY r.DOB, r.RegDate

而不是获得一列&#34; Under20&#34;有了一行数据,我得到了所有不同的DateBirth行。

如果没有DateDiff,我该如何Group By

2 个答案:

答案 0 :(得分:0)

我让这个工作,但我讨厌选择内的选择。如果有人知道一种更简单的方式,我会很感激。出于某种原因,当在select中作为select时,SQL不需要任何一个语句来拥有GroupBy子句。

SELECT COUNT(UNDER20) AS UNDER20
        FROM (
            SELECT 
            UNDER20 = CASE WHEN DATEDIFF(YEAR,DateBirth,regdate) < 20 THEN '1'    END
            FROM dbo.Registration r
            ) a

答案 1 :(得分:0)

这是:

 SELECT 
     SUM (
        CASE WHEN DATEDIFF(YEAR,DateBirth,regdate) < 20 THEN 1
        ELSE 0 END
     ) 
 FROM dbo.Registration r