我有一個包含兩列的表。我需要依次使用Oracle查詢將兩列的內容檢索到一列中。如何從列中檢索記錄到單個列中?
FirstName LastName
Naveen Bharadwaj
Usain Bolt
我想檢索記錄到一個列中,使名和姓的順序。
Name
Naveen
Bharadwaj
Usain
Bolt
P.S:我不能用解碼()函數
我有一個包含兩列的表。我需要依次使用Oracle查詢將兩列的內容檢索到一列中。如何從列中檢索記錄到單個列中?
FirstName LastName
Naveen Bharadwaj
Usain Bolt
我想檢索記錄到一個列中,使名和姓的順序。
Name
Naveen
Bharadwaj
Usain
Bolt
P.S:我不能用解碼()函數
使用此查詢期望的結果,
SELECT Name FROM TableName UNPIVOT (Name FOR NAME IN (FirstName,LastName));
希望這有助於!
要獲得記錄成一列,你可以使用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,因爲可能有重複想要保留,因此性能可能會更好。
對不起,我在移動設備上輸入了問題,並且出現格式問題。我希望的輸出是在問題中編輯的。名字和姓氏作爲新行。 – NaveenBharadwaj
啊,我明白了。我會更新我的答案。 – bbrumm
謝謝。但是查詢以錯誤的順序返回結果。訂單是「Naveen,Usain,Bharadwaj,Bolt」 預計爲: 「Naveen,Bharadwaj,Usain,Bolt」 – NaveenBharadwaj