sql - 根据案例陈述加入
问题描述
我想在两个表之间有 2 个连接条件,第一个连接条件应该始终有效,但第二个连接条件只有在满足条件时才有效,否则根据前两个连接给出结果。
我有两种方法,一种是直接给出两个条件,然后为第三个连接添加 case 语句
其次,我尝试在 ON 之后使用 case 语句对于第一种情况,我有 1 个连接条件,对于第二种情况,我有 2 个连接条件。
SELECT *,IND.bill_to_id FROM txn_sales_shippedorders_intl shippedorders
LEFT JOIN ( SELECT cust_sid, max(cust_key) cust_key
,cust_nbr
FROM com_hub.ref_customer_hco_intl
GROUP BY cust_sid, cust_nbr
) cust ON cust.cust_sid = regexp_replace(shippedorders.cust_align_sid, "\\.0*", '')
--AND cust.country_cd = shippedorders.country_cd
AND cust.src_sys_id=shippedorders.src_sys_id
LEFT JOIN
(SELECT CUSTOMER,ship_to_id, bill_to_id
FROM com_lake.ref_india_customer_crossmap
) ind ON case when substr(SDVR02,1,2) ='IM'
and ind.ship_to_id = cust.cust_nbr then 1
WHEN substr(SDVR02,1,2) ='ER' and ind.CUSTOMER = cust.cust_name then 1
else 0
end 1
解决方案
目前你的加入没有意义。您必须查看案例陈述的结果。
此刻它写道:
Left JOIN (...) ind ON 0
或者
Left Join (...) ind on 1
你需要有一个论点 - 例如
Left JOIN (...) ind on ind.index = CASE WHEN ...
推荐阅读
- vue.js - Vue.js 中的可滚动卡片列表
- javascript - 如何在 jQuery 中调用 div 高度并将其动态设置为另一个 div 的 css(在调整窗口大小时)?
- windows - 终端进程启动失败:shell 可执行文件 ""..\vs-kubernetes\tools\kubectl\kubectl.exe".exe" 的路径不存在
- mysql - MySQL查询一列中具有相同值而另一列中具有不同值的行
- php - 一个将我的 laravel 8 应用程序部署到我遇到的 Heroku 请提供有效的缓存路径
- r - R:将 grob 对象转换为 ggplot/plotly
- spring - Maven 在调用 mvn install 时只运行集成测试
- flutter - 如何通过 Flutter 在 Google Fit 上注册跑步
- css - 不支持 MIME 类型
- javascript - 重复的每日倒计时