Sql server 根据ID提取属于特定日期段的所有行
我的任务是分析与每个ID相关的前12周信息 我有两张桌子 合同和销售 合同具有实体的ID、位置和开始日期 Sales具有交易的ID、价值和日期 我需要的是销售表仅限于每个ID的(开始日期)和(开始日期+12周)范围内的销售数字 附件中我提供了一个表格的模式(第一次使用SQLFIDLE!)作为帮助 在ID的示例中:701910AIR、702536AIR、700701ARD 合同项目包括:Sql server 根据ID提取属于特定日期段的所有行,sql-server,Sql Server,我的任务是分析与每个ID相关的前12周信息 我有两张桌子 合同和销售 合同具有实体的ID、位置和开始日期 Sales具有交易的ID、价值和日期 我需要的是销售表仅限于每个ID的(开始日期)和(开始日期+12周)范围内的销售数字 附件中我提供了一个表格的模式(第一次使用SQLFIDLE!)作为帮助 在ID的示例中:701910AIR、702536AIR、700701ARD 合同项目包括: ID Start Date Location 701910AIR 01/08/201
ID Start Date Location
701910AIR 01/08/2016 AIREHGA
702536AIR 01/08/2016 AIREHGA
700701ARD 11/02/2016 ARDRIEI
我只希望以下销售条目显示:
Value Date ID
266.05 09/08/2016 701910AIR
410.25 01/09/2016 701910AIR
417.10 05/10/2016 701910AIR
133.00 09/08/2016 702536AIR
182.35 01/09/2016 702536AIR
228.80 05/10/2016 702536AIR
245.91 17/02/2016 700701ARD
205.57 01/03/2016 700701ARD
263.65 15/03/2016 700701ARD
222.20 29/03/2016 700701ARD
244.55 13/04/2016 700701ARD
182.50 27/04/2016 700701ARD
我提前表示歉意,每次我试图将日期列转换成更易于识别的格式时,SQLFIDDLE站点都会不断抛出错误
感谢您抽出时间阅读我的问题。我想您需要函数DATEADD(),类似于:
Select * from sales where
Date > startDate and Date < DATEADD(wk, 12, startDate)
从sales where中选择*
日期>开始日期和日期<日期添加(第12周,开始日期)
您案例中的完整代码:
Select s.* from sales s
join Contract c on s.ID = c.ID
where
DDate > c.Start_date and DDate < DATEADD(wk, 12, c.Start_date)
从sales s中选择s.*
在s.ID=c.ID上加入合同c
哪里
DDate>c.Start\u日期和DDate
您已经用sql server标记了它,但您的小提琴是为mysql准备的。您实际使用的是哪一个?嗨,Sean,我在发布模式时遇到了一些问题,正如在文章中提到的-实际上我使用的是Sql server。另一件事是,您在SqlFIDLE中的数据与此处发布的数据不匹配。您声明了日期,但是fiddle是int。如果您不能让SQLfiddle工作,那么在您的问题中发布ddl和示例数据。