我有两张桌子,一张(tb1
)有列日期,早餐,午餐,晚餐,星期几。另一个(tb2
)有到达日期和出发日期。
我希望按tb2
符合条件tb1.date is between tb2.arrivaldate and tb2.departuredate
的行数更新餐饮数字。
进一步复杂化的是早餐和晚餐只有在tb2.dayofweek
是工作日时才会更新,如果星期几在周末,早餐和午餐会更新。如果重要的话,这两个表都是临时表。任何帮助将不胜感激!
以下是我的结果:
答案 0 :(得分:0)
你还没有提到你正在使用的SQL的味道,而且有几条评论已经注意到没有表格和表格。数据脚本或您迄今为止尝试过的内容。这不会是你的最终代码,但它应该让你知道一种方法可以用来获得你想要的数字。
select
tb1.date,
count(tb2.arrivaldate) as breakfast,
sum(case when tb1.day_of_week in ('Saturday', 'Sunday') then 1 else 0 end) as lunch,
sum(case when tb1.day_of_week not in ('Saturday', 'Sunday') then 1 else 0 end) as dinner
from
tb1 left join tb2 on tb1.date between tb2.arrivaldate and tb2.departuredate
group by tb1.date
请注意,这不是我的首要任务,我没有尝试过或使用您的数据对其进行测试;)