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