如何使用单行在结果集中创建多行以创建视图?

问题描述 投票:0回答:1

考虑下表,

Emp Info1 Info2 MoreInfo
1   2     3     info_emp_1
1   2     4     NULL
2   2     6     info_emp_2
2   3     6     NULL

我需要如下结果,

1 info_emp_1   //kind of a header for emp 1
1 2 3
1 2 4
2 info_emp_2   //kind of a header for emp 2
2 2 6
2 3 6

我正在努力为每个员工创建/获取标题部分。我需要使用表中的第一行来创建结果集的前两行。任何帮助/建议都是不切实际的。

sql oracle select plsql plsqldeveloper
1个回答
0
投票

您可以使用union allorder by

select emp, info1, info2, more_info from mytable
union all
select distinct emp, null, null, null from mytable
order by emp, info1 nulls first, info2 nulls first

这将产生null而不是“标题”行的某些客户字符串(否则,我们将需要处理数据类型转换)。

如果info1info2可能包含null值(样本数据中未显示,那么您需要另外一列来定义顺序:

select emp, info1, info2, more_info
from (
    select emp, info1, info2, more_info, 1 ord from mytable
    union all
    select distinct emp, null, null, null, 0 ord from mytable
)
order by emp, ord, info1, info2
© www.soinside.com 2019 - 2024. All rights reserved.