我试图创建一行数据,但是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
?
答案 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