SQL更新表取决于另一个表

时间:2018-05-23 15:55:29

标签: sql sql-update case

我有两张桌子,一张(tb1)有列日期,早餐,午餐,晚餐,星期几。另一个(tb2)有到达日期和出发日期。

我希望按tb2符合条件tb1.date is between tb2.arrivaldate and tb2.departuredate的行数更新餐饮数字。

进一步复杂化的是早餐和晚餐只有在tb2.dayofweek是工作日时才会更新,如果星期几在周末,早餐和午餐会更新。如果重要的话,这两个表都是临时表。任何帮助将不胜感激!

以下是我的结果:

1 个答案:

答案 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

请注意,这不是我的首要任务,我没有尝试过或使用您的数据对其进行测试;)