我有表sdata
,它有35列(id
,name
,TRx1
,TRx2
,TRx3
,TRx4
,...,TRx30
,city
,score
,total
)如何使用循環動態生成列名稱?
我想獲取來自TRx1,...TRx30
列中的數據。
我可以在這裏使用循環嗎?
我下面的代碼:
DECLARE @flag INT
DECLARE @sel varchar(255)
DECLARE @frm varchar(255)
SET @flag = 1;
SET @sel = 'select TRx';
SET @frm = ' from sdata';
exec(@sel +
(WHILE @flag <=5
@flag
SET @flag = @flag + 1)
+ @frm)
什麼錯我在幹嘛?我該如何解決這個問題?
複製/粘貼和更改列名的速度比編寫「while」循環來構建動態查詢的速度快上百萬倍(並且複雜性/容易出錯)。 – Siyual
不要在SQL中使用循環。決不。不要這樣做。 SQL不是循環。 – Hogan
我不明白爲什麼人們討厭while循環。這個'loop'只是爲了產生字符串而沒有任何錯誤....當你通過記錄(即)'RBAR'來處理數據記錄的時候,你不必擔心,但是這個循環完全沒問題。 –