[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