SQL Server从表数据构建动态日历并从其他表中选择数据

时间:2016-01-25 21:52:26

标签: sql-server pivot parent-child

我有这个日历表,它指定了每年的日期范围。它有像

这样的数据

TBL1

start_date        end_dt        yr    period_num
------------------------------------------------
2015-12-27        2016-01-22    2016    1            
2015-01-24        2016-02-27    2016    2
2015-02-28        2016-03-26    2016    3
...
2016-11-27        2016-12-31    2016    12
2017-01-01        2017-01-01    2017    1

然后,我有另一张表,其中有产品条目,例如

TBL2

prod_id        weeknum      wkstartdate     postingDate     qty
----------------------------------------------------------------
1043890         1           2016-01-10      2016-01-18      3
1043890         2           2016-01-17      2016-01-18      6
1043890         3           2016-01-24      2016-01-18      2
1043890         4           2016-01-31      2016-01-18      0
...
1043890         50          2016-12-18      2016-01-18      1
1043890         51          2016-12-25      2016-01-18      2
1043890         52          2017-01-01      2016-01-18      7

表AllProd2在这里定义http://sqlfiddle.com/#!6/5836b/17

它基本上包含有关产品和某些层次结构信息的详细信息。 TBL2只有父ID的数据,但是一旦我加入表格,我需要显示优先级最高的ID(如果有孩子的话)。

我想做的是根据TBL1中定义的时间段建立年度日历。当我运行查询时,它需要计算当前一周的一年。然后从表2中捕获每个时期的数据,并使用如下所示的产品详细信息构建结果集:

它需要总结在TBL1中定义的给定月度期间的所有数量

期望的结果:

Prod_id     ParentID    Descrip Dept    SubDept Class   SubClass    Data-12/27/15   Data-1/24/16    ....... Data-11/27/16    Data-1/1/17    52wTotal
1043889     1043890     14 RD   abc     def     xyz     gty             9               7                       3               7           49 (summing up all qty for this product)
.....

我目前的解决方案已经过时,并且使用了几个阶段来做一些有点相似的事情,但希望简化这一点并使其高效。感谢任何帮助。

感谢。

0 个答案:

没有答案