假设我有两个表格,格式如下:
表1:访问量
Customer | Website_visit_id | Time_of_visit表2:预订
Customer | Hotel_booking_id | Time_of_booking我创建了一个表,其中有客户的id,他们的预订,以及他们在预订之前30天内对网站进行的所有访问,使用以下代码:
select customer, booking_id, website_visit_id
from visits a
join booking b
on a.customer = b.customer
and Time_of_visit between dateadd(days, -30, time_of_booking) and time_of_booking我的问题是-如果我想扩展这个时间范围,看看在预订之前60,90,120...365天内有多少访问量,我如何才能最有效地做到这一点(而不是必须在更改了dateadd编号的情况下运行连接12次?有没有办法在join语句中添加一个参数来代替'30‘天?
输出的形式可以是预订及其相应访问/时间范围的列表,也可以是每个时间范围内的预订和访问总数的表格(如下所示:
Time_frame| Customer | Hotel_booking_id | Number of visits
T30D | Mike | 1A | 5
T60D | Mike | 1A | 15
T90D | Mike | 1A | 22
T120D | Mike | 1A | 27
Thank you in advance发布于 2020-06-01 10:27:02
如果你想动态构建一个查询,你应该看看你的数据库是否支持动态查询/sql。本质上,不是运行查询,而是运行带有逻辑的存储过程,以确定查询参数应该是什么。在此基础上,您将能够基于首选逻辑动态创建查询并执行它。
我不确定您使用的是哪个DB,但是我知道MySQL和Oracle支持这一点。
有关详细信息,请参阅以下链接:
https://stackoverflow.com/questions/62124800
复制相似问题