我曾經在那裏每年需要12個條目,每個月一,即一個YearMonths表,如何從年表創建YearMonths表?
Year Month
2013 1
2013 2
...
2013 12
對於每個新的一年裏,我不得不產生12分新的記錄。我知道我可以用循環做到這一點,但我試圖找出一種沒有辦法的方法。我想通過從年表中選擇所有年份並從那裏進行填充,但我不確定如何不使用循環。
我曾經在那裏每年需要12個條目,每個月一,即一個YearMonths表,如何從年表創建YearMonths表?
Year Month
2013 1
2013 2
...
2013 12
對於每個新的一年裏,我不得不產生12分新的記錄。我知道我可以用循環做到這一點,但我試圖找出一種沒有辦法的方法。我想通過從年表中選擇所有年份並從那裏進行填充,但我不確定如何不使用循環。
假設你的年數表是這樣的:
CREATE TABLE YEARS(Year INT)
和你YearMonths表是這樣的:
你可以做這樣的事情:
WITH CTE AS (
SELECT 1 AS Mnth
UNION ALL
SELECT Mnth + 1 FROM CTE
WHERE Mnth < 12)
INSERT INTO YearMonths (Year, Month)
SELECT Year, Mnth FROM YEARS CROSS APPLY CTE
ORDER BY Year, Mnth
此方法使用recursive Common Table Expression(自SQL Server 2005起可用)構建in teger 1-12然後cross applies它以Years Table建立最終名單。
很酷,謝謝。 – Yatrix
的SQL Server版本? – christiandev
2005 - 添加到標籤。 – Yatrix