У меня есть вложенные функции IIF()
в моем операторе select, а внутри каждой из них есть вложенные функции MAX()
. Кажется, я хочу, чтобы я включил этот оператор выбора в GROUP BY. Вот мой запрос:
SELECT
d2s_loader_performance_tbl.employee_id,
IIF(d2s_loader_performance_tbl.wk_ending_dt=max(d2s_loader_performance_tbl.wk_ending_dt),"Last Wk",
IIF(d2s_loader_performance_tbl.wk_ending_dt=max(d2s_loader_performance_tbl.wk_ending_dt)-7,"2 Wks Ago",
IIF(d2s_loader_performance_tbl.wk_ending_dt=max(d2s_loader_performance_tbl.wk_ending_dt)-14,"3 Wks Ago",
IIF(d2s_loader_performance_tbl.wk_ending_dt=max(d2s_loader_performance_tbl.wk_ending_dt)-21,"4 Wks Ago")))),
d2s_loader_performance_tbl.hrs_worked,
d2s_loader_performance_tbl.move_count,
d2s_loader_performance_tbl.moves_per_hour
FROM d2s_loader_performance_tbl
WHERE d2s_loader_performance_tbl.wk_ending_dt In (
SELECT DISTINCT TOP 4 wk_ending_dt
FROM d2s_loader_performance_tbl
ORDER BY wk_ending_dt DESC)
GROUP BY
d2s_loader_performance_tbl.employee_id,
d2s_loader_performance_tbl.move_count,
d2s_loader_performance_tbl.moves_per_hour
Когда я запускаю, я получаю эту ошибку: «Вы пытались выполнить запрос, который не включает указанное выражение [перечисляет фрагмент, который является вложенным IIF] как часть агрегатной функции. Когда я помещаю это в GROUP BY (который не имеет смысла), я получаю эту ошибку: «Не может иметь агрегатную функцию в предложении GROUP BY»
Итак, что, с точки зрения двойной хоккейной клюшки, хочет от меня доступ? Смысл этого в том, чтобы превратить выходные даты в относительный термин. Этот отчет обновляется еженедельно, и я устал вручную просматривать все свои запросы и отчеты и менять ссылки на новые даты.
Спасибо!
SELECT Max(wk_ending_dt) AS MaxOfwk_ending_dt, Max(wk_ending_dt) - 7 AS MaxOfwk_ending_dt7 FROM d2s_loader_performance_tbl
, чтобы проверить математику, и это тоже работает — я получаю 2 столбца, 28/12/13 и 21/12/13. - person Trevor D   schedule 31.12.2013