Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server从表数据构建动态日历并从其他表中选择数据_Sql Server_Pivot_Parent Child - Fatal编程技术网

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

Sql server SQL Server从表数据构建动态日历并从其他表中选择数据,sql-server,pivot,parent-child,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-

我有一个日历表,它指定了每年的日期范围。它有如下数据

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
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
然后,我有另一个表,其中有产品条目,例如

TBL2

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
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在此定义

它基本上有产品的详细信息和一些层次结构信息。TBL2只有父ID的数据,但一旦我加入表,我需要显示具有最高优先级的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)
.....
我有一个当前的解决方案,它已经过时,并且使用了几个阶段来做一些类似的事情,但希望能够简化这个过程并使其高效。谢谢你的帮助


谢谢。

为了简化操作,有人能帮我从这些日期范围构建列视图吗?这里有很多关于如何构建动态轴的示例。。每天都会出现3到4个。。您是否查看过其中任何一个并尝试自己构建查询?我已经构建了一些透视表,但是,我认为这种情况是独特的。有些作品我不知道该如何建造。我很快就会发布一个样本。我几乎已经弄明白了。只需要一点帮助。所以我这里有一张日历表,我几乎把它弄明白了。只需要一点帮助。所以我有这个日历表,这里有两个标志(M,W)表示月份或周。我需要加入TBL2(上面的),它有一个周日期字段。因此,我将在weekstartdate使用Cal table on start date(带W标志)在上面的TBL2中加入项目,但如果weekstartdate介于开始日期和结束日期之间,我需要返回带有“M”标志的startdate。这有意义吗?