2017-02-20 75 views
3

我有一個包含兩列的表。我需要依次使用Oracle查詢將兩列的內容檢索到一列中。如何從列中檢索記錄到單個列中?

FirstName  LastName 
Naveen   Bharadwaj 
Usain   Bolt 

我想檢索記錄到一個列中,使名和姓的順序。

Name 
Naveen 
Bharadwaj 
Usain 
Bolt 

P.S:我不能用解碼()函數

回答

1

使用此查詢期望的結果,

SELECT Name FROM TableName UNPIVOT (Name FOR NAME IN (FirstName,LastName)); 

希望這有助於!

0

要獲得記錄成一列,你可以使用the UNION ALL operator

如果您希望它們保持它們在表格中的順序,您可以通過ID或主鍵列進行排序。我假設你有一個,因爲你需要知道原始訂單是什麼,才能保留它。

所以,這樣的事情:

SELECT fullname 
FROM (
    SELECT 1 AS name_type, 
    name_id, 
    firstname AS fullname 
    FROM yourtable 
    UNION ALL 
    SELECT 
    2, 
    name_id, 
    lastname 
    FROM yourtable 
) sub 
ORDER BY sub.name_id, sub.name_type; 

的name_type表示1的名字和2個姓,這是用於排序,並保持頭名的姓氏上。 使用子查詢是因爲您只想顯示名稱,但按其他列排序。

我會建議使用UNION ALL而不是UNION,因爲可能有重複想要保留,因此性能可能會更好。

+0

對不起,我在移動設備上輸入了問題,並且出現格式問題。我希望的輸出是在問題中編輯的。名字和姓氏作爲新行。 – NaveenBharadwaj

+0

啊,我明白了。我會更新我的答案。 – bbrumm

+0

謝謝。但是查詢以錯誤的順序返回結果。訂單是「Naveen,Usain,Bharadwaj,Bolt」 預計爲: 「Naveen,Bharadwaj,Usain,Bolt」 – NaveenBharadwaj