首页 > 解决方案 > 使用 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

标签: sqltsqlinner-join

解决方案


使用横向连接(即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()它足够简单,以至于重复它不是问题。


推荐阅读