我有一個返回這個派生表的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