0
我正在研究一些非常簡單的SQL查詢,即同一查詢的雙胞胎,更改字段。這裏的一個例子:按列名稱分組的SQL變量
select
field1
,sum(field2)
from table
group by field1
而我必須這樣做的三個領域,總是總場field2。這意味着例如:
select
field3
,sum(field2)
from table
group by field3
依此類推。我感到無聊得很快,所以我決定學習一些新東西,應用一個變量,並且只改變一次分組字段的名稱。
declare @field varchar (10);
-- use field1, field3, field4
set @field = 'field1';
select
@field
,sum(field2)
from table
group by @field
,結果是這個錯誤:
Each GROUP BY expression must include at least one column that is not an external reference (roughly translated by Google Translator)
好吧,我決定到底要面對的羣體,所以我刪除它:
declare @field varchar (10);
-- use field1, field3, field4
set @field = 'field1';
select
@field
from table
結果是沒有名字的列,並且在行上有許多field1字作爲行的數字,全部等於常量,類似於:
no name
field1
field1
field1
....
field1
代替
field1
a
b
c
...
z
所以問題有兩個:
- 如何將一個變量添加爲查詢列名?
- 如何在一個組中管理它?
預先感謝您的時間!
SQL Server不支持宏替換,則需要使用動態SQL這個 –
[申報查詢字符串變量(HTTPS的可能重複:// stackoverflow.com/questions/3833352/declare-variable-for-query-string) – Tanner