Sql 如何从年表创建年-月表?
我有一个YearMonths表,每年需要12个条目,每个月一个,即Sql 如何从年表创建年-月表?,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我有一个YearMonths表,每年需要12个条目,每个月一个,即 Year Month 2013 1 2013 2 ... 2013 12 对于每一个新的一年,我必须产生12个新的记录。我知道我可以通过一个循环来完成这项工作,但我正试图找到一种不用循环就能完成的方法。我想通过从一个年份表中选择所有年份来填充这个表,从那里开始,我只是不知道如果不使用循环,如何填充 假设您的年份表是这样的: CREATE TABLE YEARS(Year INT) CREATE TABLE
Year Month
2013 1
2013 2
...
2013 12
对于每一个新的一年,我必须产生12个新的记录。我知道我可以通过一个循环来完成这项工作,但我正试图找到一种不用循环就能完成的方法。我想通过从一个年份表中选择所有年份来填充这个表,从那里开始,我只是不知道如果不使用循环,如何填充 假设您的年份表是这样的:
CREATE TABLE YEARS(Year INT)
CREATE TABLE YearMonths(Year INT, Month Int)
你的年月表是这样的:
CREATE TABLE YEARS(Year INT)
CREATE TABLE YearMonths(Year INT, Month Int)
您可以这样做:
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
这种方法使用一个从SQLServer2005开始可用的变量来构建整数1-12的列表,然后将其转换到年份表来构建最终列表
演示:哪个版本的sql server?2005-已添加到标记中。