表T与您的表类似,我使用接近您的测试数据填充表,如果它们不存在,您填充的表将被创建。
尝试重新创建表
CREATE TABLE T(name varchar(10), date datetime)
insert t values('RecordA','2011-08-30')
insert t values('RecordB','2011-08-31')
insert t values('RecordC','2011-09-01')
insert t values('RecordD','2011-09-02')
此语法,如果需要创建和填充像TABLE_YYYY_MM表。 YYYY和MM是任何组合发现它表T
Declare @tablename varchar(64)
Declare @sql as varchar(max)
Declare @d as datetime
Declare dCursor CURSOR FAST_FORWARD FOR
SELECT DISTINCT dateadd(month, datediff(m, 0, date), 0) date from t
OPEN dCursor
FETCH NEXT FROM dCursor
INTO @d
WHILE @@FETCH_STATUS = 0
BEGIN
SET @tablename = '[TABLE_'+replace(CONVERT(VARCHAR(7), @d, 121), '-', '_') + ']'
SET @SQL =
'if OBJECT_ID('''[email protected]+''', ''U'') is null
BEGIN
Declare @sql2 varchar(max)
SET @sql2 = ''SELECT * INTO '[email protected]+'
FROM t WHERE 1 = 2''
EXEC(@sql2)
END
INSERT INTO '+ @tablename+'
SELECT * FROM t
WHERE datediff(m, 0, date)=' + CAST(datediff(m, 0, @d) AS VARCHAR(10))
EXEC(@SQL)
FETCH NEXT FROM dCursor
INTO @d
END
CLOSE dCursor
DEALLOCATE dCursor
谢谢,这正是我之后的:) –