CASE WHEN逻辑

CASE WHEN logic

我正在尝试比较两个单独的 table 和 return 中的数据,如果两个 table 中的数据不匹配,则 "Mismatch" 代码。我的问题是,在 SO_SalesOrderHistoryHeader table 中,SalesPersonNo 是 0,而 DailySales_BB.dbo.Exceptions table 中的匹配响应是 DestinationTerritory,即 50。我的逻辑是说如果 SalesPersonNo 等于 0 那么 return 50 来匹配 DestinationTerritory。当我使用这个逻辑(见下面的代码)时,报告生成所有 NULLS。

看似简单的逻辑,却难倒了我??任何帮助将不胜感激!

代码:

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...)
           THEN EX.DestinationTerritory 

你的案例逻辑没有问题。试试这个:

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)