[英]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.