如何将列中的记录按顺序检索到单个列中?

时间:2017-02-20 03:37:54

标签: sql oracle

我有一个包含两列的表。我需要使用Oracle查询按顺序将两列的内容检索到一个列中。

FirstName      LastName
Naveen         Bharadwaj
Usain          Bolt

我想将记录检索到一个列中,以便第一个名称和姓氏按顺序排列。

Name
Naveen
Bharadwaj
Usain
Bolt

P.S:我不能使用decode()函数

2 个答案:

答案 0 :(得分:1)

将此查询用于所需结果

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

希望这有帮助!

答案 1 :(得分: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,因为您可能需要保留重复项,因此性能可能会更好。