根据另一个列存在添加列

时间:2017-08-07 21:48:22

标签: sql sql-server-2012

我正在寻找一种方法来寻找

 Table 1
 ColumnA ColumnB ColumnC
  A        BN1
  B        BN2
  C        BN3
  D        BN4
  BN1      BN1         Min
  BN1      BN1          Max
  BN2      BN2          Mode
  BN3      BN3           Avg
  BN3      BN3            Mode
  BN5      BN5          Avg

我需要根据ColumnB的不同值找到它们(当它们在列中不匹配时,这意味着,不同的值只有ColumnA中的A,B,C和D),存在ColumnA,其中包含ColumnB的任何不同值,所以我应该知道ColumnA的ColumnC的值是什么(它应该基于ColumnB的不同值存在)。例如,在这个BN4中,ColumnA中不存在,所以我们忽略它。 BN5存在于ColumnA中,但ColumnB没有它们(A,B,C,D),所以我们忽略它。

输出应

 Table 2
 ColumnD  ColumnE   ColumnF

  BN1      BN1         Min
  BN1      BN1         Max
  BN2      BN2         Mode
  BN3      BN3         Avg
  BN3      BN3         Mode

在这种情况下忽略BN5。

1 个答案:

答案 0 :(得分:0)

试试这个

select *
from table t
where t.columnA in ('A','B','C','D)
and t.columnB in (select distinct t1.columnB from table t1)
and t.columnC in (select distinct t2.columnC from table t2)
and t.columnD in (select distinct t3.columnD from table t3)
and t.columnE in (select distinct t4.columnE from table t4)