sql - 有没有办法在连接子句中执行 If Then 语句
问题描述
我有两张桌子,花费和预订,我正在尝试完全加入。由于表格的性质(并非所有预订都有花费,并且并非所有花费都有 booking_id,有时会分配错误的 booking_id),我想在 join 子句中做一个条件语句。
select bk.booking_id, bk.company_id, bk.event_id, bk.total_amount_booked, sp.spend
from
(select booking_id, company_id, event_id, booked_rate, total_amount_booked
from bookings) bk
full join
(select booking_id, company_id, event_id, normalized_spend, spend
from spend) sp
on (bk.booking_id = sp.booking_id and bk.booked_rate = sp.normalized_spend)
or (bk.company_id = sp.company_id and bk.event_id = sp.event_id);
基本上,如果 booking_id 匹配并且标准化支出与 booking_rate 匹配,则在该条件下加入。如果没有,请加入 company_id 和 event_id。
但是,执行此查询会返回
FULL JOIN is only supported with merge-joinable join conditions;
有一个更好的方法吗?使用红移
解决方案
也许使用 CASE 语句,比如
...ON CASE WHEN (bk.booking_id = sp.booking_id and bk.booked_rate = sp.normalized_spend)
THEN (bk.booking_id = sp.booking_id and bk.booked_rate = sp.normalized_spend)
WHEN (bk.company_id = sp.company_id and bk.event_id = sp.event_id)
THEN (bk.company_id = sp.company_id and bk.event_id = sp.event_id)
END
推荐阅读
- xml - 使用 XSLT 从 XML 创建平面 CSV
- java - Thymeleaf 没有替换 XML 模板的变量
- r - 将固定值更改为 tidymodels 中的变量列表
- python - 用 pandas 添加 If 语句
- mongodb - 3 节点副本集的 2 个节点出现故障时的 MongoDB 故障转移
- sql - where 子句错误 - WHERE INSpecialDateRange
- google-chrome - 在同步的 Google Chrome 浏览器的书签栏上添加自定义书签
- nginx - Nginx 模块直播(快照)
- javascript - 从 discord.js 中的 ana 数组中删除 args
- python - 如何将 QTextEdit 设置为像终端一样缩进?