在 Oracle Sql 中的 Select 语句中根据条件排除和包含列标题
Posted
技术标签:
【中文标题】在 Oracle Sql 中的 Select 语句中根据条件排除和包含列标题【英文标题】:Exclude and Include column header based on condition in Select statement in Oracle Sql 【发布时间】:2016-07-08 05:33:02 【问题描述】:我有一张表,其架构如下
Documentno created docstatus
498461 08-OCT-14 IN
501681 27-OCT-14 IN
544491 19-AUG-15 IP
550041 28-SEP-15 IP
输出应该是像
这样的格式select Documentno, created from c_order where docstatus in ('IP')
Documentno created
544491 19-AUG-15
550041 28-SEP-15
select Documentno, created,docstatus from c_order where docstatus in ('IN')
Documentno created docstatus
498461 08-OCT-14 IN
501681 27-OCT-14 IN
联合的预期输出
Documentno created
544491 19-AUG-15
550041 28-SEP-15
Documentno created docStatus
498461 08-OCT-14 IN
501681 27-OCT-14 IN
这可能在 sql select 语句中吗? 我尝试过使用 Case 但它仅适用于 Value 不适用于列名 请任何人指导我如何在 oracle 中实现此 select 语句?
【问题讨论】:
【参考方案1】:你必须给出列名,至少它应该由一个字符组成
测试数据
with t(Documentno,
created,
docstatus) as
(select 498461, sysdate, 'IN'
from dual
union all
select 501681, sysdate + 1, 'IN'
from dual
union all
select 544491, sysdate + 2, 'IP'
from dual
union all
select 550041, sysdate + 3, 'IP'
from dual)
查询
select Documentno, created, null as " "
from t
where docstatus in ('IP')
union all
select null, null, 'STATUS'
from dual
union all
select Documentno, created, docstatus from t where docstatus in ('IN')
输出
DOCUMENTNO CREATED
---------- -------- ------
544491 10/07/16
550041 11/07/16
STATUS
498461 08/07/16 IN
501681 09/07/16 IN
【讨论】:
以上是关于在 Oracle Sql 中的 Select 语句中根据条件排除和包含列标题的主要内容,如果未能解决你的问题,请参考以下文章
SQL 查询的 SELECT 子句中 Oracle PL/SQL 语句的延迟评估
如何从 oracle pl sql 中的包主体内的 select 语句中捕获特定列
如何写sql语句去掉oracle返回结果中的空值(NULL)