SQL查询原型如下
SELECT * FROM 表A LEFT JOIN 表B ON concat(表A.字段a,'-',表A.字段b,REPLACE ( 表A.字段c, 0, '' )) = 表B.字段a)
现在的需求是在ON条件中,如果concat(表A.字段a,'-',表A.字段b,REPLACE ( 表A.字段c, 0, '' )) != 表B.字段a)
,那么执行concat(表A.字段a,'-',表A.字段b) = 表B.字段a)
这种SQL语句应该怎么写?
用case when 或者 decode都行
SELECT * FROM 表A LEFT JOIN 表B ON
case when concat(表A.字段a,'-',表A.字段b,REPLACE ( 表A.字段c, 0, '' )) != 表B.字段a
then concat(表A.字段a,'-',表A.字段b)
end = 表B.字段a
SELECT * FROM 表A LEFT JOIN 表B ON
deocde( concat(表A.字段a,'-',表A.字段b,REPLACE ( 表A.字段c, 0, '' )) ,
表B.字段a,
null,
concat(表A.字段a,'-',表A.字段b)
)=表B.字段a