[SQL ] Oracle DB的With-as用法

作者: UCboy (遊戲boy)   2018-07-11 18:41:23
資料庫名稱:Oracle - PL/SQL
內容/問題描述:請問能否讓兩個SELECT敘述 共用一個With-as創建出來的Table?
目前有一個老客戶優惠級距的Table: Discount
經過 AA 的條件處理後會取得以下子table tb1:
折扣編號 起始年數 終止年數 折扣數
Disno StartPt EndPt Discnt
01 1 1 90
02 2 4 80
03 5 7 70
04 8 99 60
會根據老客戶 從使用到現在 的年數 Diff_y
去判斷是在哪個級距 進而套用對應的折扣
但如果是在兩級距交界的月份 就必須去取得兩段級距
再依照天數比例算出該月的優惠
例如:
開始使用是1050711,那10707這個月份就會有兩段折扣
1070701~1070711採用01折扣,1070712~1070731採用02折扣
簡單來說就是要取得 兩段級距個別的折扣
目前我的寫法是
with tb1 as(
Select * FROM Discount WHERE (AA) )
SELECT Disno, Discnt INTO v_dno, v_dv2
FROM tb1
WHERE StartPt <= Diff_y
AND Diff_y <= EndPt;
(先取得該段級距之折扣編號及折扣數)
SELECT Discnt INTO v_dv1
FROM tb1
WHERE Disno=v_dno-1;
(再取得前一段級距之折扣)
但好像不能這樣兩段SELECT共用一個With的Table?
請問專業的大大們
有其他辦法可以讓兩段Select共用一個Temp Table嗎?
感謝各位
作者: cutekid (可愛小孩子)   2018-07-11 22:12:00
要不要直接把「來源 table」有哪些資訊跟「你想要查詢出來的結果」長什麼樣子用個 Sample 表達出來,這樣會比較好幫的上忙喔

Links booklink

Contact Us: admin [ a t ] ucptt.com