首先,如OMG Ponies所述,您不能通過它們的序號位置來引用列。這不是意外。 SQL規範不是爲DDL或DML中的動態模式構建的。
鑑於這一點,我不得不想知道爲什麼你的數據結構與你一樣。當您嘗試提取信息時,架構和問題域之間不匹配的跡象會自動增加。當查詢編寫起來非常麻煩時,這表明模式沒有正確地爲其設計的域建模。
然而,是因爲它可以給你告訴我們,一個替代的解決方案是類似以下內容:(我假設field_1*field1
本來是field_1 * field_1
或field_1
方形或Power(field_1, 2)
)
Select 1 As Sequence, field_1 As [Field], Sfield_1 As [SField], Sfiled_1 As [SFiled]
Union All Select 2, field_2, Sfield_2, Sfiled_2
...
Union All Select n, field_n, Sfield_n, Sfiled_n
現在你的查詢看起來像:
With Inputs As
(
Select 1 As Sequence, field_1 As [Field], Sfield_1 As [SField], Sfiled_1 As [SFiled]
Union All Select 2, field_2, Sfield_2, Sfiled_2
....
)
, Results As
(
Select Case
When Sequence = 1 Then Power([Field], 2) - ([SField] * [SFiled])
Else 1/Power([Field], 2) - ([SField] * [SFiled])
End
As Result
From Inputs
)
Select Exp(Sum(Log(Result)))
From Results
的[是否有可能使用柱順序位置選擇SQL Server數據]可能的複製(http://stackoverflow.com/questions/368505/is-it-possible-to-select-sql-server-數據使用列順序位置) – 2015-10-07 05:40:26