逻辑时的情况

时间:2015-12-21 19:17:17

标签: sql-server sql-server-2012 case-when

我正在尝试比较两个单独表中的数据,如果两个表中的数据不匹配,则返回“Mismatch”代码。我的问题是在SO_SalesOrderHistoryHeader表中SalesPersonNo为0,DailySales_BB.dbo.Exceptions表中的匹配响应为DestinationTerritory,即50。我的逻辑是说if { {1}}等于0然后返回50以匹配SalesPersonNo。当我使用此逻辑时(请参阅下面的代码),报告将生成所有NULLS。

这似乎是简单的逻辑,但它让我难过?任何帮助将不胜感激!

代码:

DestinationTerritory

1 个答案:

答案 0 :(得分:0)

您的案例逻辑没有任何问题。试试这个:

SELECT  
    SOH.SalesOrderNo ,
    'Territory Mismatch - Exception' AS [ReasonForError]
FROM    
    ASHEVMSAGE100.MAS_PHE.dbo.SO_SalesOrderHistoryHeader SOH,
    ASHEVMSQL.DailySales_BB.dbo.Exceptions EX
WHERE 
    CASE 
        WHEN CAST(SOH.SalespersonNo AS INT) = 0
           THEN 50 
           ELSE CAST(SOH.SalespersonNo AS INT) 
     END <>
    CASE WHEN (...multiple cases...)  --make sure all cases result in an INT
           THEN CAST(EX.DestinationTerritory AS INT)