簡體   English   中英

Oracle SQL Developer中的動態變量

[英]Dynamic variables in Oracle SQL Developer

我為每個sale_Dt條件設置了四個查詢,並希望合並為1個查詢。

DEFINE SALE_DT = 20DEC2016;

Select 
STORE_ID,
SALES_FINAL_DT, 
SUM(SALES) AS TOTAL_sALE
From SALES_DB
Where SALES_FINAL_DT  = '&SALE_DT'
GROUP BY STORE_ID, SALES_FINAL_DT

我想將SALE_DT一個動態變量,該變量在sale_Dt中循環,其值為sale_dt = 20dec2016sale_dt - 7sale_dt - 8sale_dt - 30

我將在查詢中指定銷售日期。

有什么建議么?

您可以使用ORIN子句指定日期的四個變體,例如:

DEFINE SALE_DT = 20DEC2016;

select STORE_ID, SALES_FINAL_DT, SUM(SALES) AS TOTAL_SALE
from SALES_DB
where SALES_FINAL_DT = TO_DATE('&SALE_DT', 'DDMONYYYY', 'NLS_DATE_LANGUAGE=ENGLISH')
or SALES_FINAL_DT = TO_DATE('&SALE_DT', 'DDMONYYYY', 'NLS_DATE_LANGUAGE=ENGLISH') - 7
or SALES_FINAL_DT = TO_DATE('&SALE_DT', 'DDMONYYYY', 'NLS_DATE_LANGUAGE=ENGLISH') - 8
or SALES_FINAL_DT = TO_DATE('&SALE_DT', 'DDMONYYYY', 'NLS_DATE_LANGUAGE=ENGLISH') - 30
group by STORE_ID, SALES_FINAL_DT;

您還可以將整個to_date()表達式替換為替換變量,以使其稍微簡化:

DEFINE SALE_DT = TO_DATE('20DEC2016', 'DDMONYYYY', 'NLS_DATE_LANGUAGE=ENGLISH')

select STORE_ID, SALES_FINAL_DT, SUM(SALES) AS TOTAL_SALE
from SALES_DB
where SALES_FINAL_DT = &SALE_DT
or SALES_FINAL_DT = &SALE_DT - 7
or SALES_FINAL_DT = &SALE_DT - 8
or SALES_FINAL_DT = &SALE_DT - 30
group by STORE_ID, SALES_FINAL_DT;

或者我們IN使它更短:

select STORE_ID, SALES_FINAL_DT, SUM(SALES) AS TOTAL_SALE
from SALES_DB
where SALES_FINAL_DT in (&SALE_DT, &SALE_DT - 7, &SALE_DT - 8, &SALE_DT - 30)
group by STORE_ID, SALES_FINAL_DT;

我在to_date()調用中包含了NLS數據語言參數,因為您使用的字符串假定會話將理解'DEC' 如果使用數字格式,則不需要這樣做,例如

DEFINE SALE_DT = TO_DATE('2016-12-20', 'YYYY-MM-DD')

或作為ANSI日期文字:

DEFINE SALE_DT = DATE '2016-12-20'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM