我強烈建議做這種應用層重命名的。
但是,如果你還堅持你可以使用動態SQL:
LiveDemo
DECLARE @A AS VARCHAR(12)= GETDATE()-1;
DECLARE @sql NVARCHAR(MAX) =
N'SELECT [Data],
SUM(CASE WHEN DATEDIFF(DAY, Dt, GETDATE()) = 1 AND Type = ''Stock'' THEN SPEND END) AS <placeholder>
FROM #vw_ZZ_AS_ComplianceLeagueTable
GROUP BY [Data];';
SET @sql = REPLACE(@sql, '<placeholder>', QUOTENAME(@A));
EXEC [dbo].[sp_executesql]
@sql;
另一種可能性是使用sp_rename
功能:
LiveDemo2
DECLARE @A AS VARCHAR(12)= GETDATE()-1;
SELECT [Data],
SUM(CASE WHEN DATEDIFF(DAY, Dt, GETDATE()) = 1 AND Type = 'Stock' THEN SPEND END) AS [placeholder]
INTO #temp
FROM #vw_ZZ_AS_ComplianceLeagueTable
GROUP BY [Data];
DECLARE @new_name NVARCHAR(128) = QUOTENAME(@A);
EXEC tempdb..sp_rename '#temp.placeholder', @new_name, 'COLUMN';
SELECT *
FROM #temp;
任何特定的SQL查詢將始終生成一個結果集,其中包含固定的「形狀」 - 列名的*名稱*和數據類型。您可以編寫動態SQL以在運行時構建新的查詢 - 通常更容易保持固定的形狀並將列的標籤重新標記爲不同的組件 - 例如,使用此結果集的應用程序或報告工具。 –