테이블을 건드릴 필요가 없다고 가정하면 (모든 데이터는 기능에서 제공됩니다). SQL Server 2000의 로컬 NVARCHAR
변수의 제한은 4,000 자이므로 범위의 길이에주의해야합니다.
이 경우
DECLARE
@startDate SMALLDATETIME,
@endDate SMALLDATETIME;
SELECT
@startDate = '20110101',
@endDate = '20110301';
DECLARE
@i INT,
@sd SMALLDATETIME,
@sql NVARCHAR(MAX),
@column VARCHAR(32),
@columns NVARCHAR(4000);
SELECT @i = 0, @columns = N'';
WHILE @i <= DATEDIFF(MONTH, @startDate, @endDate)
BEGIN
SET @sd = DATEDIFF(DAY, 0, DATEADD(MONTH, @i, @startDate));
SET @column = DATENAME(MONTH, @sd)
+ ' ' + CONVERT(VARCHAR(20), YEAR(@sd));
SET @columns = @columns + ',' + CHAR(13) + CHAR(10)
+ ' [' + @column + ']' + ' = dbo.FunctionName(''' + @column + ''')';
SET @i = @i + 1;
END
SET @sql = 'SELECT ' + STUFF(@columns, 1, 1, '') + ';';
PRINT @sql;
--EXEC sp_executesql @sql;
이 수율 :
SELECT
[January 2011] = dbo.FunctionName('January 2011'),
[February 2011] = dbo.FunctionName('February 2011'),
[March 2011] = dbo.FunctionName('March 2011');
그들은 항상 같은 해가 될 것 및/또는 월부터 시작하거나 달력 년 통과 할 수 있습니까? 그리고 제공되는 날짜는 항상 그 달의 첫 번째 날이 될 것이며 시간을 포함하지 않을 것입니까? SQL Server의 어떤 버전입니까? –
어떤 버전의 SQL Server입니까? – JNK
날짜 범위가 달력 연도를 이동할 수 있습니다. 매개 변수는 DATETIME에 시간을 포함하지 않습니다. 달의 날짜는 첫 번째 날짜가 아닌 유효한 날짜 일 수 있습니다. SQL Server 8.0.2039는 SQL Server 2000 – kenalacom