В моем запросе, я использую OUTER APPLY
, чтобы получить количество сотрудников в различных сценариях, какВнешняя ссылка Колонка в агрегатной функции креста применить
- Количество сотрудников Зарегистрирован в каждый день периода
- Номер персонала Уволился в каждый день периода
- Количество сотрудников оставляют на каждый день периода ... и т.д.
Ожидаемый результат (From:2017-01-10 to 2017-01-12
)
CDATE TOTAL_COUNT JOIN_COUNT RESIGNED _COUNT ...
2017-01-10 1204 10 2
2017-01-11 1212 5 1
2017-01-12 1216 3 0
Ниже мой запрос
DECLARE @P_FROM_DATE DATE = '2017-01-01', --From 1st Jan
@P_TO_DATE DATE = '2017-01-10' --to 10th jan
;WITH CTE_DATE
AS
(
SELECT @P_FROM_DATE AS CDATE
UNION ALL
SELECT DATEADD(DAY,1,CDATE)
FROM CTE_DATE
WHERE DATEADD(DAY,1,CDATE) <= @P_TO_DATE
)
SELECT [CDATE]
,[TOTAL_COUNT]
,[JOIN_COUNT]
FROM CTE_DATE
OUTER APPLY (
SELECT COUNT(CASE WHEN [EMP_DOJ] = [CDATE] THEN 1 ELSE NULL END) AS [JOIN_COUNT]
,COUNT(*) AS [TOTAL_COUNT]
,....
,...
FROM [EMPLOYEE_TABLE]
) AS D
Но при выполнении моего запроса, получить ошибку ниже.
Msg 8124, уровень 16, состояние 1, строка 18 Несколько столбцов указаны в агрегированный выражение, содержащее внешнюю ссылку. Если агрегированное выражение содержит внешнюю ссылку, то внешняя ссылка должна быть единственным столбцом, на который ссылается выражение.
Здесь столбец [JOIN_COUNT]
производит ошибку, без этой колонки запрос работает. Но у меня есть еще колонки в ожидании, чтобы добавить как [JOIN_COUNT]
(например, Resigned_Count, ... и т.д.)
Это в одной из частей SQL, которую вы нам не показываете? Части? – Cato
, похоже, связано с этим http://sqlmag.com/blog/aggregates-outer-reference - их SQL также выглядел разумным - вы могли бы выполнять каждый сотрудник как отдельный раздел оператора WITH, а затем SELECT большой запрос из них в конце? – Cato
@Cato, если я удаляю 'COUNT (CASE WHEN [EMP_DOJ] = [CDATE] THEN 1 ELSE NULL END) AS [JOIN_COUNT]', я получу запрос с ожидаемым выходом. Но JOIN_COUNT только ошибка (но у меня больше столбцов, ожидающих, как этот JOIN_COUNT, как RESIGN_COUNT, JUNIOR_JOIN_COUNT '... –