簡體   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