2012-11-01 56 views
2

需要一些Sql帮助?我的Sql尚未完成。 我有一个表SQL反向列值查询

ColA ColB ColC 
A  B  101 
B  B  102 
C  B  102 
B  A  108 

我需要能够识别COLC其中有在柱A和Col B中的同一条目(但相反)的行,即其中色柱B =列A.但不是值像3行为,其中色柱B对应的值没有匹配或连续两个地方柱A =列B.

结果集是

Col A  Col B  Col C 
A   B   101 
B   A   108 

回答

6

你可以做一个自连接 - 即:参加表本身...

select t1.* , t1.ColC-t2.ColC 
from yourtable t1 
    inner join yourtable t2 
     on t1.colA = t2.colB 
     and t1.colB = t2.colA 
where t1.colA <> t1.colB 
+0

+1优雅的解决方案 –

+0

感谢Podiluska,现在我要研究如何获得生成的值,并从另一个中减去另一个匹配的相反对。 – icecurtain

+0

@icecurtain我在其中添加了区别。您可能需要围绕它的“ABS”。 – podiluska