【发布时间】:2020-04-28 04:19:16
【问题描述】:
我正在尝试对单独查询的结果运行查询,以根据唯一的 Route_Code 和 Delivery_Day 更新每条记录的 Route_Type 列。对于 select 查询中的每个不同 Route_Code,Route_Type 应根据以下逻辑进行更新:
- 如果 Delivery_Day = 'Mon' 的特定 Route_Code 没有记录,则 Route_Type 应更新为 'A'
- 如果 Delivery_Day = 'Sat' 的特定 Route_Code 没有记录,则 Route_Type 应更新为 'B'
- 如果没有特定 Route_Code 的记录,其中 Delivery_Day = 'Mon' OR 'Sat',则 Route_Type 应为 'TBD'
- Else 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
作为后续行动,我希望所有记录少于 1 个月的 Route_Code 都显示“待定”。到目前为止我的逻辑是
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() 函数只处理单个参数,我想知道从这里去哪里。
【问题讨论】:
标签: sql sql-server tsql