分组依据和列表不匹配

时间:2018-11-05 02:07:25

标签: sql-server group-by

我的表格如下:

Col1        Col2                Col3    Col4                    Col5
1           50.9499411799115    Point   imp                     A
1           109.69487431133     Point   exp                     1
1           107.69487431133     Point   exp                     2
1           1019.69487431133    Point   exp                     B
2           51.5403193833315    Point   imp                     0
2           50.5403193833315    Point   exp                     3

我要按Col1分组,然后选择在Col5中没有“ A”或“ B”的所有内容

我使用下面的查询在MSSQL中生成输出,但没有得到正确的结果,有人可以指出我的错误

SELECT Col1
FROM table1
WHERE
    Col5 NOT LIKE('%A%')
or  Col5 NOT LIKE('%B%')
GROUP BY Col1;

因此我的输出应该是

Col1 
2

1 个答案:

答案 0 :(得分:1)

问题是您要根据另一行中的数据来消除一行,因此唯一的方法是检查另一天,例如

select Col1
from table1 D1
where not exists (select 1 from table1 D2 where D2.Col1 = D1.Col1 and (Col5 like ('%A%') or Col5 like ('%B%')))
group by Col1