我有两张表,其中一张(tb1
)列有date、早餐、午餐、晚餐和星期几。另一个(tb2
)具有到达日期和离开日期。
我希望通过满足条件tb1.date is between tb2.arrivaldate and tb2.departuredate
的tb2
中的行数来更新餐饮编号。
更复杂的是,只有当tb2.dayofweek
是工作日时,早餐和晚餐才会更新,而如果一周中的某一天是周末,早餐和午餐才会更新。这两个表都是临时表。任何帮助都将不胜感激!
以下是我的结果:
发布于 2018-05-24 05:23:27
您还没有提到您正在使用哪种风格的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
请注意,这是我的想法,我没有尝试过,也没有用你的数据测试过;)
https://stackoverflow.com/questions/50492770
复制相似问题