2011-05-10 100 views
0

我想使用遊標將列轉換爲行。我知道人們說遊標是正確的。我知道我們可以使用樞軸來實現這一點。但問題是客戶端需要將它作爲帶有for循環的遊標。不確定爲什麼他們需要這種方式,但看起來像他們更容易理解代碼。使用光標將列轉換爲行

表A

ID FieldA FieldB FieldC 
1 abc  123  xyz 

這需要轉換爲

ID Field0 
1 abc 
1 123 
1 xyz 

如何實現任何指針也可能是有益的

感謝

Prady

+0

對不起..它應該是逆透視......是啊,我知道它很莫名其妙的感覺有些光標是簡單的...它只是太複雜,我:( – Prady 2011-05-10 12:25:07

+1

這是' UNPIVOT'你需要而不是'PIVOT',我看不到光標代碼是什麼,但不那麼簡單。你需要的基本代碼是'SELECT ID,Field0 FROM Table1 UNPIVOT(Field0 FOR FieldName IN(FieldA,FieldB,FieldC))U' – 2011-05-10 12:26:02

+1

客戶需要的東西並不一定是他們需要的......牢記這一點。我可以告訴你,我需要一臺運行在80486 cpus上的新服務器,並且可以這樣做,但這不是最好的解決方案。 – JNK 2011-05-10 12:46:48

回答

3

爲什麼不乾脆:

select ID, FieldA as Field0 from TableA 
union all 
select ID, FieldB from TableA 
union all 
select ID, FieldC from TableA 
+0

這很有趣...不知道它可以這麼簡單..但客戶端似乎堅持遊標 – Prady 2011-05-10 12:26:24