我有一个只有一列的表,大约有100行唯一的名称。但是我需要连续显示3个名字。这样我每行会得到34行,有3个名字。
示例:
Name
_____
Raj
Sam
Guru
Tej
Avin
Sami
Fanst
我需要将上述数据显示为
Name Name1 Name2
____ _____ ______
Raj Sam Guru
Tej Avin Sami
Fanst
没有条件只需要将单列值转换为3列数据。
Oracle DB
答案 0 :(得分:2)
您可以使用条件聚合和rownum执行此操作。像这样:
select max(case when mod(rn, 3) = 1 then name end) as name1,
max(case when mod(rn, 3) = 2 then name end) as name2,
max(case when mod(rn, 3) = 0 then name end) as name3
from (select name, rownum as rn
from table t
) t
group by trunc((rn - 1) / 3);
答案 1 :(得分:0)
您可以使用CASE
执行此操作,请使用PIVOT
尝试PIVOT
这样的Name
列
SELECT Name,Name1,Name2
FROM
(SELECT Name FROM table_name) AS SourceTable
PIVOT
(
FOR Name IN (Name,Name1,Name2)
) AS PivotTable;