sql - 使用 CASE 结果中的选择值连接 2 个表
问题描述
我有 1 个表,如果另一个 ID 为空,我必须在其中显示 1 个 ID 的值。
然后,我需要使用该 CASE 的结果与具有相同 ID 的第二个表连接pid
。
我被卡住了,无法完全弄清楚这一点。有人可以帮助我纠正这个问题吗?
我的查询如下:
SELECT
fa.name, fa.email_address,
CASE
WHEN pl.main_ID IS NULL THEN pl.sub_ID
ELSE pl.main_ID
END as pid ,pl.*
FROM TableA pl
INNER JOIN TableB fa ON fa.parent_account_sid = pl.pid
解决方案
使用横向连接(即apply
):
SELECT fa.name, fa.email_address, v.pid, pl.*
FROM TableA pl CROSS APPLY
(VALUES (COALESCE(pl.main_ID, pl.sub_ID)) v(pid) JOIN
TableB fa
ON fa.parent_account_sid = v.pid;
当然,您可能会发现COALESCE()
它足够简单,以至于重复它不是问题。
推荐阅读
- c# - 为什么我会收到“无法创建 Microsoft.AspNetCore.Http.IFormFile 类型的实例”错误?
- .net - .NET CORE 3.1 中的 WSDL 导入
- python - sqlalchemy 查询:获取按序号排序的帖子列表。喜欢和评论
- git - 使用 gitflow 时,我无法解决 [develop] 和 [master] 之间的持续合并冲突
- javascript - 如何根据活动元素过滤 ng-repeat?
- json - JQ 将数组映射到具有索引的对象 - 如何
- python - 选中 CheckBox 时更改整个窗口的样式表
- ios - 用户没有收到仅来自我的推送通知
- git - 运行“git cherry”时如何获取 *other* commit-id?
- javascript - 如何获得垂直和对角对齐的数组元素?