【发布时间】:2011-10-21 03:29:07
【问题描述】:
我需要帮助编写一个 T-SQL 查询,该查询将从一个表中生成每个特许经营 52 行数据,该表通常包含每个特许经营 52 周序列中的间隙(即特许经营可能每两周报告一次数据或整整一年没有营业)。
我要查询的表如下所示:
FranchiseId | Date | ContractHours | PrivateHours
我需要将它加入到一个类似这样的表中:
FranchiseId | Name
查询的输出需要如下所示:
Name | Date | ContractHours | PrivateHours
---- ---------- ------------- ------------
AZ1 08-02-2011 292 897
AZ1 07-26-2011 0 0 -- default to 0's for gaps in sequence
...
AZ1 08-03-2010 45 125 -- row 52 for AZ1
AZ2 08-02-2011 382 239
...
AZ2 07-26-2011 0 0 -- row 52 for AZ2
我需要为每个特许经营权提供这种风格的输出,即在一个结果集中,52 行数据以及 52 周序列中任何间隙的默认行。因此,如果有 100 个特许经营权,结果集应该是 5200 行。
我的尝试
我尝试了以下典型建议:
- 创建一个包含所有可能日期的表格
- LEFT OUTER JOIN 将此加入所需数据表
我遇到的问题是
- 确保每个特许经营店有 52 行,并且
-
用特许经营名称和 0 填补空白,我不能 结果集中有以下内容:
Name | Date | ContractHours | PrivateHours ---- ---------- ------------- ------------ NULL 08-02-2011 NULL NULL
我不知道从这里去哪里?有没有一种有效的方法来编写 T-SQL 查询来产生所需的输出?
【问题讨论】:
标签: tsql sql-server-2008 date