多列上的SQL表筛选器

多列上的SQL表筛选器,sql,sql-server,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

我有一个表,它具有其他表的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   1   1   1   0
1   2   1   1   0
2   1   1   1   3
2   1   2   2   1
3   1   1   2   0
这里,列是:A、B、C、D、E

需要分配的过滤器如下所示:

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   1   1   1   0
1   2   1   1   0
2   1   1   1   3
2   1   2   2   1
3   1   1   2   0
  • A、B、C、D列的值将相同
  • 如果A列的值相同,但B、C、D列的值不同,则应在结果中添加
  • 对于列E的结果中的每一行,其值将为最小值
  • 根据上述过滤器,查询输出应如下所示:

    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   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)
    
    选择t1*
    从测试表t1中,
    测试表t2
    式中(t1.A=t2.A
    t1.B=t2.B
    t1.C=t2.C
    t1.D=t2.D
    和t1.E

    但是在这个查询中,我没有得到唯一的一行,该行对于列A具有相同的值,但是对于列B、C、D

    具有不同的值。从我所能看出,您想要:

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

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

    据我所知,您需要:

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

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

    您的第二个条件没有意义。你的第三个模棱两可。
    E
    的值最小超过了什么?在您的预期输出中,请指定哪一行满足哪些条件,这将有助于我们更好地理解。如果您还包括DDL和INSERT,这也很有帮助:-)/您的第二个条件没有意义。你的第三个模棱两可。
    E
    的值最小超过了什么?在您的预期输出中,请指定哪一行满足哪些条件,这将有助于我们更好地理解。如果您将DDL和插入也包括在内,这也很有帮助:-)/不想抱怨,但问题(即使它很混乱)是关于两个表和它们之间的一些逻辑them@BartoszX我把它理解为“表中包含的行的值是来自其他表的外键”,我想知道什么是正确的。我不想抱怨,但问题(即使它很混乱)是关于两个表和它们之间的一些逻辑them@BartoszX我把它读作“该表包含的行的值是来自其他表的外键”,我想知道什么是正确的。