首页 > 解决方案 > SQL JOIN ON(有两个条件)

问题描述

我想知道是否可以编写一个 SQL ORACLE 命令,在 on() 条件下使用两个 CASE WHEN 连接两个表;我试过这种方式;但它没有用

SELECT *
FROM A  a
   LEFT OUTER JOIN B b
       ON ((CASE
                WHEN LENGTH (a.xxx) = 3
                THEN a.xxx
                WHEN LENGTH (a.yyy) = 2
                THEN TO_CHAR (a.xxx || TRUNC (a.zzz, 'YY'))
            END) **=**
           (CASE
                WHEN LENGTH (a.xxx) = 3 THEN b.wert
                WHEN LENGTH (a.xxx) = 2 THEN b.bez
            END));

标签: sqloraclejoin

解决方案


这是你想要的逻辑吗?

on (length(a.xxx) = 3 and a.xxx = b.wert) or
   (length(a.xxx) = 2 and (a.xxx || TRUNC(a.zzz, 'YY')) = b.bez) 

case布尔表达式通常不需要表达式。


推荐阅读