Таблица: подпискаДают скидку на основе подписки года
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.
что в DATA_TYPE колонки SUB_YEAR в подписку таблицы – vishad
c_id number, sub_year integer, целочисленное значение sub_amount, целое число со скидкой, целое число p_amount. sub_year - общее количество лет. – user3274067