2016-02-29 50 views
0

任何想法爲什麼我的用於UOMC.ToUnitOfMeasure的case語句返回NULL?如果我反轉並顯示To字段之前的字段,將工作,但從不會。使用與THEN相同的字段的多個CASE語句的SQL查詢

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' 
+0

你在哪裏檢查結果? SSMS或您的應用程序? –

+0

@ivanStarostin SSMS –

+0

不應該有NULL而不是字符串文字'NULL'? –

回答

1

你有兩個引用(往返),所以你必須參考目錄UNITOFMEASURE兩次:

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 
+0

感謝伊萬解決它,不能相信我錯過了:) –

0

這結束了正確的語法。錯過了與TO單元和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'