Home » SQL & PL/SQL » SQL & PL/SQL » CASE WHEN Might be the answer?
CASE WHEN Might be the answer? [message #7363] Sun, 08 June 2003 08:28
Andrew
Messages: 144
Registered: March 1999
Senior Member
Hi,

I have the following query: -

SELECT GR.CODE, AR.CODE, AR.DESCRIPTION, TA.QTY_WEIGHT, TA.QTY_WEIGHT * NVL(PR.PRICE, 0),
TA.PRICE, TA.QTY_WEIGHT * NVL(PR.PRICE, 0) - TA.PRICE, TO_CHAR(TA.TIMESTAMP, 'DD.MM.YYYY HH24:MI:SS'),
CA.DESCRIPTION, SH.DESCRIPTION, OP.DESCRIPTION
FROM TB_TRANSACTIONS TR, TB_TRANS_ARTICLES TA, TB_ARTICLES AR, TB_GROUPS GR, TB_PRICES PR,
TB_OPERATORS OP, TB_CASHREGS CA, TB_SHOPS SH
WHERE TR.ID = TA.TRANSACTION_ID
AND TA.ARTICLE_ID = AR.ID
AND TR.PRICELEVEL_ID = PR.PRICELEVEL_ID
AND PR.ARTICLE_ID (+) = AR.ID
AND TR.DELETE_OPERATOR_ID IS NULL
AND TR.OPERATOR_ID = OP.ID
AND TR.BOOKKEEPING_DATE BETWEEN TO_DATE('05.06.2003', 'dd.mm.yyyy')
AND TO_DATE('08.06.2003', 'dd.mm.yyyy')
AND TA.MENU_ID IS NULL
AND TA.PRICE <> TA.QTY_WEIGHT * NVL(PR.PRICE, 0)
AND CA.ID = TR.CASHREG_ID
AND SH.ID = CA.SHOP_ID
AND GR.ID (+) = AR.GROUP_A_ID 


All is well, until the Article in TB_TRANS_ARTICLES has a Unit Of Measure.

Where an Article has a UOM it appears in TB_PRICES as many times as it has UOM Units.

TB_PRICES: -
Name                            Null?    Type
------------------------------- -------- ----
ID                              NOT NULL NUMBER(9)
ARTICLE_ID                      NOT NULL NUMBER(9)
PRICELEVEL_ID                   NOT NULL NUMBER(9)
PRICE                           NOT NULL NUMBER(10,2)
FORMULA                                  VARCHAR2(10)
UOM_UNIT_ID                              NUMBER(9)

SQL> select article_id, price, uom_unit_id
  2  from tb_prices
  3  where article_id = 6;

ARTICLE_ID     PRICE UOM_UNIT_ID
---------- --------- -----------
         6       .95           1
         6      1.95           2


The Article in TB_TRANS_ARTICLES has a UOM_ID of 2, however when the query runs it returns a price of .95 instead of 1.95.

I think I know what is neeeded, but I'm not sure do to my expeience on how to code it in SQL.

Would using CASE WHEN help: -

SELECT GR.CODE, AR.CODE, AR.DESCRIPTION, TA.QTY_WEIGHT,
CASE WHEN TA.UOM_ID IS NULL THEN
    TA.QTY_WEIGHT * NVL(PR.PRICE, 0)
ELSE
    #Select Price from TB_PRICES where the TA.UOM_ID = the UOM_UNIT_ID from TB_PRICES???
END,
TA.PRICE, TA.QTY_WEIGHT * NVL(PR.PRICE, 0) - TA.PRICE, TO_CHAR(TA.TIMESTAMP, 'DD.MM.YYYY HH24:MI:SS'),


Any help would be gratefully appreciated.

Also if more information is needed please let me know.

Regards,

Andrew
Previous Topic: Display output on the screen
Next Topic: Single Package or Multiple Packages
Goto Forum:
  


Current Time: Fri Apr 26 17:42:47 CDT 2024