以ID为基础提取属于特定日期时段的所有行

时间:2017-05-25 13:11:59

标签: sql-server

我的任务是分析与每个ID相关的前12周的信息。

我有两张桌子;

合同和销售

合同具有实体的ID,位置和开始日期。

销售人员拥有交易的ID,价值和日期。

我需要的是,Sales表仅限于每个ID(开始日期)和(开始日期+12周)范围内的销售数字

附件我已经包含了一个表格(第一次使用sqlfiddle!)来帮助。

http://sqlfiddle.com/#!9/3c0d5c

在ID的例子中:701910AIR,702536AIR,700701ARD

合同行是:

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网站就会出现错误。

感谢您抽出宝贵时间阅读我的问题。

1 个答案:

答案 0 :(得分:1)

我猜你需要函数DATEADD(),类似于:

Select * from sales where
Date > startDate and Date < DATEADD(wk, 12, startDate)

您的案例中的完整代码:

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)