【发布时间】:2014-07-16 04:42:06
【问题描述】:
我想我已经看到了有关 MySQL 的类似问题的答案,但我正在努力寻找适用于 SQL Server 2005 的答案。
所以我有一张这样的桌子:
| ID | RelationalID | Year
----------------------------
| 1 | A | 2014
| 2 | A | 2014
| 3 | B | 2014
| 4 | A | 2015
| 5 | B | 2015
当我加入 RelationID 匹配但年份不同的同一个表时,我想要这样的结果:
| 2014_ID | 2015_ID | RelationalID |
------------------------------------
| 1 | 4 | A |
| 2 | NULL | A |
| 3 | 5 | B |
但是标准的 JOIN 最终会得到重复的匹配:
| 2014_ID | 2015_ID | RelationalID |
------------------------------------
| 1 | 4 | A |
| 2 | 4 | A |
| 3 | 5 | B |
有没有办法在 SQL Server 2005 中连接两个表,其中右表中的匹配项只连接一次?
我试过这个查询没有成功:
SELECT * FROM myTable
LEFT JOIN (SELECT * FROM myTable) AS t ON t.RelationalID = myTable.RelationalID
WHERE myTable.Year = 2014 and t.Year = 2015
【问题讨论】:
-
能不能把失效的查询加进去?
-
示例非工作查询为:SELECT * FROM myTable LEFT JOIN (SELECT * FROM myTable) AS t ON t.RelationalID = myTable.RelationalID WHERE myTable.Year = 2014 和 t.Year = 2015
-
您能解释一下为什么 {2,4,A} 不是有效输出,而 {1,4,A} 是有效输出吗?
-
除非您想进行非常复杂的查询,否则基本上这是不可能的。那么接下来的问题是,为什么要以想要查看的形式呈现数据呢?
-
@Anon {2,4,A} 无效,因为 2015_ID 4 已在集合 {1,4,A} 中匹配
标签: sql sql-server sql-server-2005