我有一个返回这个派生表的SQL脚本。用连接插入缺失的行
MM/YYYY Cat Score
01/2012 Test1 17
02/2012 Test1 19
04/2012 Test1 15
05/2012 Test1 16
07/2012 Test1 14
08/2012 Test1 15
09/2012 Test1 15
12/2012 Test1 11
01/2013 Test2 10
02/2013 Test2 15
03/2013 Test2 13
05/2013 Test2 18
06/2013 Test2 14
08/2013 Test2 15
09/2013 Test2 14
12/2013 Test2 10
正如您所见,我错过了一些MM/YYYYs(03/2012,06/2012,11/2012等)。
我想用Cat &填写缺失的MM/YYYY,得到0(零)。
我试图加入一个包含所有MM/YYYY的查询将运行的范围的表,但这只会返回第一次出现的缺失行,它不会为每个Cat重复(应该已知那)。
所以我的问题是这样的,我可以使用连接来做到这一点,或者我必须在临时表中执行此操作,然后输出数据。
AHIGA, LarryR ...
虽然范围很小,但性能差异并不明显,但一般情况下,使用递归CTE是生成顺序列表的不好方法。 [这篇关于SQL性能的文章](http://www.sqlperformance.com/2013/01/t-sql-queries/generate-a-set-2)显示了可用于在SQL中生成顺序列表的各种方法的测试-服务器。 – GarethD 2013-04-25 08:01:11
这也失败了,因为如果在'@ temp'表中添加了另一行('20120601','Test2',10)',那么结果将不再考虑test1的'20120601'丢失,即使那里在2012年6月没有测试记录。 – GarethD 2013-04-25 08:04:56
@GarethD,谢谢你的评论。不过,最初的问题是解决这个任务。我同意你的看法,即在某些情况下使用CTE并不是最佳选择。但是,对于这个特定的任务,我们不会展望太多,以便生成一个超过50,000个值的序列。从这个角度来看,我们甚至可能看不到查询生产力的下降。 – Devart 2013-04-25 09:16:28