- 注文の合計が 100 を超えて 200 未満の場合、価格を 10% 引き下げる必要があります
注文の合計が 200 を超える場合、価格を 20% 下げる必要があります
BEGIN FOR item IN(SELECT ORDER_LINE.O_ID,SUM(INVENTORY.INV_PRICE) AS SUM, SUM(INVENTORY.INV_PRICE) -SUM(INVENTORY.INV_PRICE)*.10 AS TEN, SUM(INVENTORY.INV_PRICE) -SUM(INVENTORY.INV_PRICE)*.20 AS TWENTY FROM INVENTORY INNER JOIN ORDER_LINE ON INVENTORY.INV_ID = ORDER_LINE.INV_ID INNER JOIN ITEM ON ITEM.ITEM_ID = INVENTORY.ITEM_ID GROUP BY ORDER_LINE.O_ID ORDER BY ORDER_LINE.O_ID) IF item.SUM > 100 AND item.SUM < 200 THEN LOOP DBMS_OUTPUT.PUT_LINE( item.O_ID||' '||item.TEN); END LOOP; ELSE IF item.SUM > 200 THEN LOOP DBMS_OUTPUT.PUT_LINE( item.O_ID||' '||item.TWENTY); END LOOP; END IF; END;
1 に答える
0
あなたのSQLでそれを行うことができます:
SELECT
ORDER_LINE.O_ID,
CASE WHEN
SUM(INVENTORY.INV_PRICE) > 100 AND SUM(INVENTORY.INV_PRICE) < 200
THEN
SUM(INVENTORY.INV_PRICE)*0.9
WHEN SUM(INVENTORY.INV_PRICE) > 200 THEN
SUM(INVENTORY.INV_PRICE)*0.8
ELSE
SUM(INVENTORY.INV_PRICE)
END SUM
FROM INVENTORY
INNER JOIN ORDER_LINE
ON INVENTORY.INV_ID = ORDER_LINE.INV_ID
INNER JOIN ITEM
ON ITEM.ITEM_ID = INVENTORY.ITEM_ID
GROUP BY ORDER_LINE.O_ID
ORDER BY ORDER_LINE.O_ID
サンプルで sum=200 の場合、割引がないことに注意してください。
代わりに合計 >= 200 をチェックする必要があることをお勧めします。
于 2013-11-01T00:35:38.060 に答える