将项目及其类别合并到单个列中

时间:2019-06-10 13:28:35

标签: sql oracle

我需要以特定方式将两列合并为一个。

这是各列。

Column A (Items) Column B (Category)
Item 1           Category A
Item 2           Category A
Item 3           Category B
Item 4           Category B
Item 5           Category C
Item 6           Category C
...

我想要实现的是这样的

Column AB
Category A
Item 1
Item 2
Category B
Item 3
Item 4
Category C
Item 5
Item 6

请告知,因为我感觉这个问题有一个简单的解决方法,我只是找不到。 谢谢!

2 个答案:

答案 0 :(得分:1)

尝试一下

with wt1
as(
select distinct t2.col2 as col1,t2.col2
from tst t2
union all
select t1.col1,t1.col2
from tst t1
)
select col1
from wt1
order by col2,col1;

输出:

COL1
A
item1
item2
B
item3
item4
C
item5
item6

答案 1 :(得分:0)

如果我理解得很好,则需要所有项目以及不同的类别。
结果应首先按类别排序,然后按项目排序。

您可以尝试这样的事情:

SELECT ColumnAB
FROM   (
        SELECT columnB AS Category
               columnA AS ColumnAB,
               2       AS ColumnType
        FROM   my_table
        UNION ALL
        SELECT DISTINCT
               columnB AS Category
               columnB AS ColumnAB,
               1       AS ColumnType
        FROM   my_table
        ORDER BY Category,ColumnType,ColumnAB
       )