【问题标题】:Outer join on multiple tables on SQL ServerSQL Server 上多个表的外部联接
【发布时间】:2015-01-22 20:58:39
【问题描述】:

我正在编写递归算法。它从去年的 4 个时期获取数据,并创建一个结果集。 问题是并非所有场景都返回 4 个周期。 所以,我在桌子上做了一组 4 个选择,使用外连接来连接它们。他们加入了PK。但是,它们都连接到第一个数据点。有时这个数据点不存在,这在我的加入中引发了麻烦。 有没有一种简单的方法可以使用 PK 对 4 个表进行完全外连接,其中包含 16 个 where 子句并使用 (+) 将它们外连接 实际上,(+) 甚至可以在 sql server 上工作吗?

谢谢, 埃里克

【问题讨论】:

  • 为什么不直接使用联合?
  • 您在发帖前尝试过 + 吗?

标签: sql sql-server outer-join self-join


【解决方案1】:

您应该首先创建一个包含上一年所有时期的完整数据集。 *您可以通过使用 SELECT DISTINCT PERIOD FROM (SELECT PERIOD FROM SetA union SELECT PERIOD FROM SetB UNION SELECT PERIOD FROM SETC etc...) AS COMPLETESET 来做到这一点"

然后对 COMPLETESET 期间的所有其他数据集进行左连接。

连接中不存在的数据点将返回空值。

【讨论】:

  • 太棒了,这行得通!我实际上创建了一个包含所有潜在 PK 的额外表,并将所有内容加入其中。这是递归自连接的绝妙技巧,谢谢!
猜你喜欢
  • 2013-07-06
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 2021-12-08
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多