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