首页 > 解决方案 > 在 SQL 查询中使用带有 ON 子句的 Case 语句

问题描述

需要您的帮助来解决以下问题。我正在使用以下查询来获取详细信息。

每当loblob1andlob2时,我想加入 ID 列,否则想使用“否”列加入。

 SELECT a.column1,b.column1
 FROM table1 a
 INNER JOIN table2 b
 ON a.region=b.region
 AND CASE WHEN a.lob IN ('lob1','lob2') 
 THEN a.id=b.id ELSE a.no=b.no

标签: sql

解决方案


您可以选择 UNION ALL 并将这两个作为两个单独的 SELECT 子句,如下所示:

SELECT a.column1,b.column1
 FROM table1 a
 INNER JOIN table2 b
 ON a.region=b.region
 AND a.id=b.id 
WHERE a.lob IN ('lob1','lob2')
UNION ALL
SELECT a.column1,b.column1
 FROM table1 a
 INNER JOIN table2 b
 ON a.region=b.region
 AND a.no=b.no
 WHERE a.lob NOT IN ('lob1','lob2') 

推荐阅读