SQL Server条件连接:替换Table A不匹配Value值后关联Table B
简化Table A与Table B的连接实现
原内连接SQL:
SELECT * FROM TableA TA JOIN TableB TB ON TA.Value = TB.Value AND TA.Value2 = TB.Value2
需求:将TableA中Value字段的BA、BB值替换为CA后再执行连接,替代繁琐的临时表循环替换方案。
方案一:使用CASE语句在连接条件中替换值
SELECT * FROM TableA TA JOIN TableB TB ON CASE TA.Value WHEN 'BA' THEN 'CA' WHEN 'BB' THEN 'CA' ELSE TA.Value END = TB.Value AND TA.Value2 = TB.Value2
方案二:用IN判断简化CASE逻辑
如果后续需要扩展替换的取值列表,这种写法更紧凑:
SELECT * FROM TableA TA JOIN TableB TB ON CASE WHEN TA.Value IN ('BA', 'BB') THEN 'CA' ELSE TA.Value END = TB.Value AND TA.Value2 = TB.Value2
优势
- 无需创建临时表或编写循环逻辑,直接在连接条件中完成值映射
- 逻辑清晰,后续维护只需修改CASE中的匹配值即可
内容的提问来源于stack exchange,提问作者Sql Programmer
相关产品推荐
相关产品推荐

