我试图在 WHERE 子句中搜索 CaseStatement。但我没有发现与我的情况相似的情况。
下面是我在 WHERE 子句中带有 CASE 语句的 SQL 语句。如果PartName = B,那么我应该应用(RecoveraleFlag = 1)条件以及其他条件。Else 此条件不适用,但所有其他条件应保留。
FROM Rec.Communications A
INNER JOIN REC.CommunicationTypes B ON A.CommunicationTypeKey = B.CommunicationTypeKey
INNER JOIN occ.Cases c ON a.CaseId = c.CaseId
INNER JOIN occ.Claims cl on a.CaseId = cl.CaseId
INNER JOIN ops.Concepts d ON c.ConceptKey = d.ConceptKey
INNER JOIN OPS.Regions f ON d.MODSRegionKey = f.MODSRegionKey
INNER JOIN COM.RepriceRequestOccurrences e ON a.CommunicationId = e.CommunicationId
INNER JOIN occ.Providers prv ON c.MODSProviderKey = prv.MODSProviderKey
WHERE
**(
CASE WHEN f.PartName = 'B' and e.RecoverableFlag = 1 then 1
ELSE 0
END
) = 1**
AND
b.CommunicationTypeCode = 'RREQ'
AND f.Region = @Region
AND a.CurrentFlag = 1
如果 Partname = B,则 where 子句中的 Case 语句可以正常工作。对于 Partname A,这将是 0=1 -始终为 false。因此,它不返回任何数据。任何人都可以提供任何替代方案。