考虑下表,
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
我正在努力为每个员工创建/获取标题部分。我需要使用表中的第一行来创建结果集的前两行。任何帮助/建议都是不切实际的。
您可以使用union all
和order 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
而不是“标题”行的某些客户字符串(否则,我们将需要处理数据类型转换)。
如果info1
或info2
可能包含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