为具有不完整日期范围的记录集添加行

时间:2013-05-07 19:23:50

标签: database sql-server-2008 tsql

这个对我来说很棘手,无法理解。

我们有一个系统,我们可以动态计算库存数量。如果有一个月客户没有任何订单,则该月没有记录,但仍然计算起始库存并显示为基于先前交易数据的滚动计算。

我现在正在提取这些数据,但需要“填补空白”,可以这么说。

例如,该表包含以下字段:

MonthYear DATETIME
WarehouseID INT
Quantity DECIMAL(18,2)

如果我把所有这些放在临时表中进行计算,我最终会得到这样的结果:

2010-01-01 00:00:00.000 135 1000.00
2010-04-01 00:00:00.000 135 2000.00
2010-07-01 00:00:00.000 135 3000.00
2010-06-01 00:00:00.000 235 1000.00
2010-07-01 00:00:00.000 235 2000.00
2011-02-01 00:00:00.000 135 1000.00
2011-03-01 00:00:00.000 135 2450.00

等等。

我需要做的是为每个仓库,如果该年度存在记录,则为表中没有的任何月份添加一个空白行。

在仓库135的上述示例中,我需要为02,03,05,08等添加记录。

有没有比使用游标和循环更简单的方法呢?

感谢。

1 个答案:

答案 0 :(得分:0)

搜索Recursive CTE。然后LEFT JOIN。得把门关上了。很抱歉快速回答。