Я пытаюсь выполнить запрос по результатам отдельного запроса, чтобы обновить столбец Route_Type для каждой записи на основе уникальных Route_Code и Delivery_Day. Для каждого отдельного Route_Code из запроса на выбор, Route_Type должен обновляться на основе следующих логик c:
- , если нет записей для указанного c Route_Code, где Delivery_Day = 'Mon' тогда Route_Type должен обновиться до 'A'
- , если нет записей для указанного c Route_Code, где Delivery_Day = 'Sat', тогда Route_Type должен обновиться до 'B'
- Если нет записей для указанного c Route_Code, где Delivery_Day = 'Mon' ИЛИ 'Sat', тогда Route_Type должен быть 'TBD'
- Иначе Route_Type = 'Both.'
Данные:
Record Route_Code Delivery_Day Route_Type
1 112 Mon
2 112 Thur
3 112 Sat
4 112 Sun
5 113 Tue
6 113 Fri
7 113 Sat
8 113 Sun
9 113 Wed
Выбор запроса:
Select Distinct Route_Code
From Deliveries;
Результаты:
Route_Code
1 112
2 113
запрос должен вернуть все уникальные Route_Code и рассчитанный Route_Type для каждого, как показано ниже ...
Желаемый результат запроса:
Route_Code Route_Type
1 112 Both
2 113 A
В качестве продолжения я хотите, чтобы все Route_Codes с записями менее 1 месяца отображали 'TBD'. Лог c, который у меня пока есть,
When
Max(sum(case when Delivery_Day= 'Mon' then 1 else 0 end),
sum(case when Delivery_Day= 'Tue' then 1 else 0 end),
sum(case when Delivery_Day= 'Wed' then 1 else 0 end),
sum(case when Delivery_Day= 'Thu' then 1 else 0 end),
sum(case when Delivery_Day= 'Fri' then 1 else 0 end),
sum(case when Delivery_Day= 'Sat' then 1 else 0 end),
sum(case when Delivery_Day= 'Sun' then 1 else 0 end)
Then 'TBD'
Я понимаю, что встроенная функция Max () обрабатывает только одиночные аргументы, и мне интересно, откуда go отсюда.