2015-10-08 6 views
0

Я пытаюсь создать один ряд данных, но предложение 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 

Вместо того, чтобы один столбец «Under20» с одной строкой данных, я получаю все различные строки даты рождения.

Как я могу сделать DateDiff без Group By?

ответ

0

Я получил это, чтобы работать, но я ненавижу Selects in Selects. Если кто-нибудь знает более простой способ, я буду благодарен. По какой-то причине, когда это делается как выбор в пределах выбора, 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 
0

Здесь:

SELECT 
    SUM (
     CASE WHEN DATEDIFF(YEAR,DateBirth,regdate) < 20 THEN 1 
     ELSE 0 END 
    ) 
FROM dbo.Registration r 
Смежные вопросы