RealWork Ответов: 1

Перечислите имена сотрудников в пределах заданного возрастного диапазона


Я должен перечислить имена сотрудников, которые попадают в данный возрастной диапазон. Я новичок в обучении использованию переменных/параметров в SQL, и мне трудно получить результат.

Я не знаю, как установить переменную, чтобы пользователь мог ввести возрастной диапазон, а затем получить имена сотрудников, которые попадают в этот диапазон.


Я получаю эту ошибку, когда запускаю этот запрос

Неправильный синтаксис рядом с ключевым словом "with". Если этот оператор является общим табличным выражением, предложением xmlnamespaces или предложением контекста отслеживания изменений, то предыдущий оператор должен заканчиваться точкой с запятой.
Msg 102, Уровень 15, Состояние 1, Линия 72


Что я уже пробовал:

Declare @AgeRange int
Set @AgeRange = DATEDIFF(YEAR, '1946-06-08', GETDATE()) 

WITH AgeData as 
  (
    SELECT FirstName, LastName,
    DateOfBirth, 
    DATEDIFF(YEAR, DateOfBirth, GETDATE()) AS AGE
    FROM ptWMember as wm
    JOIN ptWorkingCertification as wc on wc.PK = wm.fkptWCertification
  ),
  GroupAge AS
(
  SELECT FirstName, LastName,
         DateOfBirth,
         Age,
         CASE
             WHEN @AgeRange < 30 THEN 'Under 30'
             WHEN @AgeRange BETWEEN 31 AND 40 THEN '31 - 40'
             WHEN @AgeRange BETWEEN 41 AND 50 THEN '41 - 50'
             WHEN @AgeRange > 50 THEN 'Over 50'
             ELSE 'Invalid Birthdate'
         END AS [Age Groups]
  FROM AgeData
 )
SELECT FirstName, LastName
FROM AgeData

1 Ответов

Рейтинг:
12

Maciej Los

Изменить это:

WITH AgeData as 

к:
;WITH AgeData as 

или закончить предыдущую линию с [;]:
Set @AgeRange = DATEDIFF(YEAR, '1946-06-08', GETDATE());