SQL表过滤多个列

时间:2017-08-03 11:06:42

标签: sql sql-server

我有一张表,其中包含其他表的ID值。我需要做的是基于一组列,应该分配过滤器,并且如果找到任何唯一行,那么它也应该被添加到结果中。

我的SQL表格如下:

A   B   C   D   E
1   1   1   1   0
1   1   1   1   2
1   2   1   1   1
1   2   1   1   0
2   1   1   1   3
2   1   1   1   4
2   1   2   2   1
3   1   1   2   0
3   1   1   2   1

此处,为: A,B,C,D,E

需要分配的

过滤器如下:

  
      
  1. A,B,C,D列的值相同。
  2.   
  3. 如果A列的值相同但 B,C,D 的值不同,则应在结果中添加
  4.   
  5. 对于 E 列的结果值中的每一行,最小
  6.   

根据上述过滤条件,查询输出应如下所示:

A   B   C   D   E
1   1   1   1   0
1   2   1   1   0
2   1   1   1   3
2   1   2   2   1
3   1   1   2   0

到目前为止我所得到的是:

SELECT t1.*
FROM TestTable t1, 
     TestTable t2
WHERE   (t1.A = t2.A
    AND t1.B = t2.B
    AND t1.C = t2.C
    AND t1.D = t2.D
    AND t1.E < t2.E)

但是在此查询中,我没有获得列 A 具有相同值的唯一行,但列 B,C,D 的值不同

1 个答案:

答案 0 :(得分:3)

据我所知,你想要:

select A, B, C, D, MIN(E)
from testtable t
group by A, B, C, D;

至少,这会产生您指定的输出。