如何在 SQL 查询中求和后保留列名
How to keep column name after sum aggregation in SQL query
我正在查询 SQL 服务器,其中我有多个具有总和聚合的列。我想知道是否有办法在对每个列进行求和后保留列名。
我想避免在所选列之后立即使用别名,因为别名的编号和名称会随着时间而改变。
我的结果示例:
我的查询:
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
有没有办法保留完成总和的列名?
...工会..?
SET @SQLQUERY = N'
SELECT TOP(0) Weeks, Years, Code,'+@PivotColumns+ '
FROM [example-base].dbo.table
UNION ALL
SELECT TOP(100) Weeks, Years, Code,'+@SumColumns+ '
FROM [example-base].dbo.table
group by Weeks,Years,Code'
通过使用文本构建查询,注意潜在的性能问题。此外,您的结果可能无法预测,而列数可能会在两次执行之间发生变化。
要为您的列添加别名,您可以使用此语句:
DECLARE @SumColumns AS nvarchar(MAX);
SELECT @SumColumns = CONCAT(COALESCE(@PivotColumns + ',', ''), 'SUM(', QUOTENAME(description), ') AS ', QUOTENAME(description))
FROM [example-base].dbo.table
我正在查询 SQL 服务器,其中我有多个具有总和聚合的列。我想知道是否有办法在对每个列进行求和后保留列名。
我想避免在所选列之后立即使用别名,因为别名的编号和名称会随着时间而改变。
我的结果示例:
我的查询:
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
有没有办法保留完成总和的列名?
...工会..?
SET @SQLQUERY = N'
SELECT TOP(0) Weeks, Years, Code,'+@PivotColumns+ '
FROM [example-base].dbo.table
UNION ALL
SELECT TOP(100) Weeks, Years, Code,'+@SumColumns+ '
FROM [example-base].dbo.table
group by Weeks,Years,Code'
通过使用文本构建查询,注意潜在的性能问题。此外,您的结果可能无法预测,而列数可能会在两次执行之间发生变化。
要为您的列添加别名,您可以使用此语句:
DECLARE @SumColumns AS nvarchar(MAX);
SELECT @SumColumns = CONCAT(COALESCE(@PivotColumns + ',', ''), 'SUM(', QUOTENAME(description), ') AS ', QUOTENAME(description))
FROM [example-base].dbo.table