Новое в расширенном SQL!
Я пытаюсь написать запрос, который возвращает COUNT (*) и SUM результирующих столбцов из этого запроса:
DECLARE @Id INT = 1000;
SELECT
*,
CASE
WHEN Id1 >= 6 THEN 1
ELSE 0
END AS Tier1,
CASE
WHEN Id1 >= 4 THEN 1
ELSE 0
END AS Tier2,
CASE
WHEN Id1 >= 2 THEN 1
ELSE 0
END AS Tier3
FROM (
SELECT
Org.OrgID,
App.AppID,
App.FirstName,
App.LastName,
MAX(AppSubmitU_Level.Id1) AS Id1
FROM Org
INNER JOIN AppEmployment
ON AppEmployment.OrgID = Org.OrgID
INNER JOIN App
ON App.AppID = AppEmployment.AppID
INNER JOIN AppSubmit
ON App.AppID = AppSubmit.AppID
INNER JOIN AppSubmitU_Level
ON AppSubmit.LevelID = AppSubmitU_Level.Id1
INNER JOIN AppEmpU_VerifyStatus
ON AppEmpU_VerifyStatus.VerifyStatusID = AppEmployment.VerifyStatusID
WHERE AppSubmitU_Level.SubmitTypeID = 1 -- Career
AND AppEmpU_VerifyStatus.StatusIsVerified = 1
AND AppSubmit.[ExpireDate] IS NOT NULL
AND AppSubmit.[ExpireDate] > GETDATE()
AND Org.OrgID = @Id
GROUP BY
Org.OrgID,
App.AppID,
App.FirstName,
App.LastName
) employees
Я попытался сделать это, переместив @Id за пределы исходного запроса и добавив SELECT (*), SUM и SUM вверху, например:
DECLARE @OrgID INT = 1000;
SELECT COUNT(*), SUM(employees.Tier1), SUM(employees.Tier2), SUM(employees.Tier3)
FROM
(SELECT *,
...
) AS employees
);
Когда я запускаю запрос однако я получаю сообщения об ошибках:
Многокомпонентный идентификатор сотрудников. Уровень 1 не может быть привязан
Такие же ошибки появляются для других идентификаторов в моем Операторы SUM.
Я предполагаю, что это связано с тем, что столбцы Tier1, Tier2 и Tier3 возвращаются внутренним запросом соединения в моем FROM (), а не значениями, установленными существующие таблицы, которые я запрашиваю. Но я не могу понять, как его переписать для правильной инициализации.
Заранее спасибо за помощь!