SQL - 如何查找所有相同的值列

时间:2017-05-24 13:40:41

标签: sql sql-server

如果我有这样的表

    Value1      Value2    
      1            A     
      1            B     
      2            A      
      2            B      
      2            C      
      3            A       
      3            B
      4            A
      4            C
      5            B 
      5            A 
      6            C  
      7            B  
      8            B 
      9            A   

我想只返回具有相同Value2的Value1(但不是更多而不是剩下的)。结果例如必须:

   Value1         Result
     1              3,5
     2             NULL
     3              1,5
     4             NULL
     5              1,3
     6             NULL
     7              8
     8              7
     9             NULL

我尝试了一些使用DISTINCT和INNER JOIN的FUNCTION,但我找不到任何解决方案。有人可以帮我理解怎么做吗?

3 个答案:

答案 0 :(得分:1)

使用STUFF的方法。您可以合并每个Value2的{​​{1}}并进行比较。

value1

演示链接:http://rextester.com/CMUHA74596

答案 1 :(得分:0)

您可以在sql语句中使用where子句来指定,只选择具有相等Value1值和Value2值的行。

使用以下SQL语句:

SELECT Value1 FROM table WHERE Value1 = Value2

答案 2 :(得分:0)

我不会为你写这篇文章,但这可能会引导你找到解决方案。

您需要使用FULL OUTER JOIN编写函数。在Value1<>Value1上将表格加入自身,将您正在测试的Value1与其他所有人进行比较。对于每个Value1配对,当FULL OUTER JOIN的任一侧为NULL时,则您没有匹配。当JOIN两侧没有NULLS用于配对时,它们完全匹配。