列的范围SQL

时间:2015-11-05 01:54:29

标签: sql sql-server

我正在使用SQL Server 2016.假设我在数据集中有sales1,sales2,..,sales100列,以及其他一些列,比如name。我想写一个像

这样的SQL查询
SELECT name, SUM(sales1), SUM(sales2),..., SUM(sales100)
FROM dataset
GROUP BY name

但我不相信这是有效的SQL语法..有没有这样的简写?

1 个答案:

答案 0 :(得分:1)

没有简写,但SSMS提供了一种简单的方法。

From Object Explorer expand your table and drag the column folder to a query window. 
It will give you a csv list of columns.

哦,但那不是你想要的!

Replace ',' with '), SUM(' and with minor tweaking you can have the desired string. 

或者你可以试试这个:

DECLARE @SQL VARCHAR(MAX) = ''
SELECT @SQL += 'SUM(' + column_name + '), ' 
FROM information_Schema.COLUMNS 
WHERE table_name = 'mytable' 
AND column_name LIKE 'sales%'
ORDER BY ORDINAL_POSITION
SELECT @SQL