繁体   English   中英

在查询标头中设置DATE Oracle SQL(SQL Developer)

[英]set DATE in query headers oracle sql (sql developer)

我正在尝试显示将在标题中使用DATE的特定数据。

数据的显示格式应类似于以下所示。

Master_Column | Todays_date |今日-1 |今日-2 |今日-3 ...

select  
   sysdate,
   SYSDATE "&&_DATE",
   (sysdate-1) "&&_DATE-1" --this header is incorrectly named
from 
  dual;

但是,这将无法正确显示最后一个标题。

有什么方法可以在标题中设置日期,这些日期会动态变化吗?

我需要安排6天的时间。 每天作为单独的列。

_DATE替代变量是一个字符串,它跟踪您的NLS_DATE_FORMAT:

show defines

DEFINE _DATE =  "2018-10-31" (CHAR)

您正在尝试从字符串中减去数字。 除非您甚至没有真正这样做,因为无论如何在双引号内不会进行任何计算。

有点混乱,但是您可以达到以下效果:我认为您是在使用多个替换变量和SQL Developer支持的column ... new_value ...语法之后,通过查询来设置这些值的-您可以使用set termout off隐藏该值set termout off (至少在最新版本中):

column date_0 new_value date_0
column date_1 new_value date_1
column date_2 new_value date_2
-- ...

set termout off
select to_char(sysdate, 'YYYY-MM-DD') as date_0,
  to_char(sysdate - 1, 'YYYY-MM-DD') as date_1
  -- ...
from dual;
set termout on

set verify off

select  
   sysdate,
   SYSDATE "&date_0",
   (sysdate-1) "&date_1"
from 
  dual;

SYSDATE    2018-10-31 2018-10-30
---------- ---------- ----------
2018-10-31 2018-10-31 2018-10-30

但是,您需要将整个内容(至少是“隐藏”部分)放入文件中,然后使用@file.sql运行该文件,因为termout不能用于直接从工作表中运行的语句。 或者,您可以在列定义中添加noprint ,也将它们隐藏起来-但仍然在输出中给您额外的空白行。

您还可以根据需要使用这些替换变量来更改列格式,例如,选择较短的虚拟值:

column master_column format a20
column &date_0 format A10
column &date_1 format A15

select  
   'a' as master_column,
   'b' as "&date_0",
   'c' as "&date_1"
from 
  dual;

MASTER_COLUMN        2018-10-31 2018-10-30     
-------------------- ---------- ---------------
a                    b          c              

请注意,在column &date_0 ... etc.子句中,变量名不应用双引号引起来,这与主查询中的别名必须使用双引号不同(因为别名中使用的字符和格式) )。

您也可以通过这样设置列标题来进一步扩展该方法,甚至可以更整洁地扩展该方法。 因此查询本身不必担心它们:

column master_column format a20
column col2 format A10 heading &date_0
column col3 format A15 heading &date_1

select  
   'a' as master_column,
   'b' as col2,
   'c' as col3
from 
  dual;

MASTER_COLUMN        2018-10-31 2018-10-30     
-------------------- ---------- ---------------
a                    b          c              

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM