2016-02-29 57 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'