sql - 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));
解决方案
这是你想要的逻辑吗?
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
布尔表达式通常不需要表达式。
推荐阅读
- java - Creating a tree at run time
- go - Why does returning a concrete type not satisfy a Interface requiring a Interface return
- angular - Observable 上的 Angular[karma] 异步测试
- r - 从字符向量创建自定义字典
- python - 如何均衡两个数据帧?
- python - I need to write a Python Script which could tell me "If I am connected to VPN or NOT" further using it as Test_Case:
- powershell - Deleting an entire row in Excel using PowerShell
- mysql - 如何准确地总结日期时间(end_date 和 begin_date 之间的差异) - mysql
- macos - 沙箱下的 NSOpenPanel - 访问用户选定文件夹中的所有文件
- entity-framework - EFCore, Is it possible to generate migration script without startup project?