2015-11-05 155 views
0

我正在使用SQL Server 2016.假設我有一列數據集中的sales1,sales2,..,sales100以及其他一些列,比如名稱。我想寫像列的總和範圍SQL

SELECT name, SUM(sales1), SUM(sales2),..., SUM(sales100) 
FROM dataset 
GROUP BY name 

一個SQL查詢,但我不認爲這是有效的SQL語法..有一個速記做到這一點?

+2

您可以使用動態SQL生成查詢。 –

+0

你可以把它們放在一個數組中,然後循環並添加它們以找到總和? – LearningProcess

+1

你爲什麼說SQL語法無效? – sstan

回答

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 
+0

.hmm之間的範圍,這看起來很有趣。會給出一個嘗試 - 謝謝! – dashnick