표 T는 귀하의 테이블과 유사합니다. 귀하의 테이블에 가까운 테스트 데이터로 테이블을 채웠으므로 귀하가 존재하지 않는 테이블이 생성됩니다.
시도가 필요하면 만들고 TABLE_YYYY_MM 같은 테이블을 채 웁니다 테이블
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')
이 구문을 다시합니다. 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
고맙습니다. 이것은 내가 겪은 것입니다. :) –