我正在查询SQL Server,其中有多列具有汇总汇总的列。我想知道是否有一种方法在对它们中的每一个求和之后都保留列名。
我想避免在所选列之后立即使用别名,因为别名的数字和名称会随着时间而变化。
我的结果示例:
我的查询:
DECLARE @SQLQUERY AS NVARCHAR(MAX)
DECLARE @PivotColumns AS NVARCHAR(MAX)
DECLARE @SumColumns as NVARCHAR(MAX)
SELECT @PivotColumns = COALESCE(@PivotColumns + ',','') + QUOTENAME(description)
FROM [example-base].dbo.table
SELECT @SumColumns = 'sum('+Replace(@PivotColumns,',','),sum(')+')'
SET @SQLQUERY = N'SELECT TOP(100) Weeks, Years, Code,'+@SumColumns+ '
FROM [example-base].dbo.table
group by Weeks,Years,Code'
EXECUTE sp_executesql @SQLQUERY
有没有办法让列名保持汇总?
通过使用文本构建查询,请注意潜在的性能问题。此外,当两次执行之间的列数会发生变化时,您的结果可能无法预测。
要将别名添加到您的列,可以使用以下语句:
DECLARE @SumColumns AS nvarchar(MAX);
SELECT @SumColumns = CONCAT(COALESCE(@PivotColumns + ',', ''), 'SUM(', QUOTENAME(description), ') AS ', QUOTENAME(description))
FROM [example-base].dbo.table
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句