我有一张表,其中包含其他表的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 。
需要分配的过滤器如下:
- A,B,C,D列的值相同。
- 如果A列的值相同但 B,C,D 的值不同,则应在结果中添加 。
- 对于 E 列的结果值中的每一行,最小
醇>
根据上述过滤条件,查询输出应如下所示:
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 的值不同
答案 0 :(得分:3)
据我所知,你想要:
select A, B, C, D, MIN(E)
from testtable t
group by A, B, C, D;
至少,这会产生您指定的输出。