Reputation: 29
Any idea why my case statement for UOMC.ToUnitOfMeasure returns NULL? If I reverse and show the To field before the from field, to will work but from will not.
SELECT
ECORESPRODUCT.DISPLAYPRODUCTNUMBER,
ECORESPRODUCT.SEARCHNAME,
INVENTTABLE.ITEMID,
UOMC.NUMERATOR,
UOMC.DENOMINATOR,
CASE
WHEN UOMC.FROMUNITOFMEASURE = UOM.RECID
THEN UOM.SYMBOL
ELSE 'NULL'
END AS 'FROM UNIT',
CASE
WHEN UOMC.TOUNITOFMEASURE = UOM.RECID
THEN UOM.SYMBOL
ELSE 'NULL'
END AS 'TO UNIT'
FROM
ECORESPRODUCT
JOIN
INVENTTABLE ON INVENTTABLE.RECID = ECORESPRODUCT.RECID
JOIN
UNITOFMEASURECONVERSION AS UOMC ON UOMC.PRODUCT = ECORESPRODUCT.RECID
JOIN
UNITOFMEASURE AS UOM ON UOM.RECID = UOMC.FROMUNITOFMEASURE
WHERE
INVENTTABLE.NAMEALIAS <> 'Discontinued'
AND INVENTTABLE.COSTGROUPID = 'FG'
Upvotes: 0
Views: 85
Reputation: 29
This ended up being the correct syntax. Was missing the extra join needed to match the TO unit and the FROM.
SELECT
ECORESPRODUCT.DISPLAYPRODUCTNUMBER,
ECORESPRODUCT.SEARCHNAME,
INVENTTABLE.ITEMID,
UOMC.NUMERATOR,
UOMC.DENOMINATOR,
CASE WHEN UOMC.FROMUNITOFMEASURE = UOM_FROM.RECID
THEN UOM_FROM.SYMBOL
END AS 'FROM UNIT',
CASE WHEN UOMC.TOUNITOFMEASURE = UOM_TO.RECID
THEN UOM_TO.SYMBOL
END AS 'TO UNIT'
FROM ECORESPRODUCT
JOIN INVENTTABLE ON INVENTTABLE.RECID = ECORESPRODUCT.RECID
INNER JOIN UNITOFMEASURECONVERSION AS UOMC ON UOMC.PRODUCT = ECORESPRODUCT.RECID
INNER JOIN UNITOFMEASURE AS UOM_FROM ON UOM_FROM.RECID = UOMC.FROMUNITOFMEASURE
INNER JOIN UNITOFMEASURE AS UOM_TO ON UOM_TO.RECID = UOMC.TOUNITOFMEASURE
WHERE INVENTTABLE.NAMEALIAS <> 'Discontinued' AND INVENTTABLE.COSTGROUPID = 'FG'
Upvotes: 0
Reputation: 9299
You have two references (TO and FROM) so you have to refer your directory UNITOFMEASURE
twice:
SELECT
...
UOM_FROM.SYMBOL as 'FROM UNIT',
UOM_TO.SYMBOL as 'TO UNIT'
FROM
...
INNER JOIN UNITOFMEASURECONVERSION AS UOMC ON UOMC.PRODUCT = ECORESPRODUCT.RECID
INNER JOIN UNITOFMEASURE AS UOM_FROM ON UOM_FROM.RECID = UOMC.FROMUNITOFMEASURE
INNER JOIN UNITOFMEASURE AS UOM_TO ON UOM_TO.RECID = UOMC.TOUNITOFMEASURE
Upvotes: 1