0
表:認購給予貼息基於訂閱一年
C_ID SUB_YEAR SUB_AMOUNT DISCOUNT PAID_AMOUNT
----------------------------------------------------
1 1 1250 0 0
2 2 2520 0 0
3 8 1459 0 0
4 6 7456 0 0
5 1 2584 0 0
6 3 2578 0 0
7 4 5478 0 0
8 5 5000 0 0
查詢我需要的是,
- 如果sub_year> 2,那麼他/她獲得10%的折扣
- 和sub_year> 2或< = 3然後他/她得到20%的折扣
- 和sub_year> 3然後得到25%的折扣。
運行查詢後,discount和paid_amount列應該由值填充。
我的查詢是:
BEGIN
FOR REC IN(SELECT SUB_YEAR FROM SUBSCRIPTION)
LOOP
IF(REC.SUB_YEAR>1 AND REC.SUB_YEAR<=2) THEN
UPDATE SUBSCRIPTION
SET DISCOUNT = 10,P_AMOUNT= SUB_AMOUNT-SUB_AMOUNT*.1;
ELSIF(REC.SUB_YEAR>2 AND REC.SUB_YEAR<=3) THEN
UPDATE SUBSCRIPTION
SET DISCOUNT = 20,P_AMOUNT= SUB_AMOUNT-SUB_AMOUNT*.2;
ELSIF(REC.SUB_YEAR>3) THEN
UPDATE SUBSCRIPTION
SET DISCOUNT = 25,P_AMOUNT= SUB_AMOUNT-SUB_AMOUNT*.25;
ELSE
UPDATE SUBSCRIPTION
SET DISCOUNT = 0,P_AMOUNT= SUB_AMOUNT;
END IF;
END LOOP;
IF SQL%NOTFOUND THEN
Dbms_output.put_line('No Employee Selected');
ElsIF SQl%FOUND THEN
Dbms_output.put_line('Employee Selected');
END IF;
END;
的問題是對所有行,該列discount
填充了25%和paid_amount
用25%的折扣sub_amount的。
什麼SUB_YEAR列DATA_TYPE在認購表 – vishad
c_id號,sub_year整數,sub_amount整數,折扣整數,p_amount整數。 sub_year是總計數年。 – user3274067