SQL过滤器组基于属性的出现

时间:2018-05-01 08:06:53

标签: sql filtering

在(T-)SQL中是否可以通过特定值的出现来过滤记录组,例如this question about a Python dataframe

例如,在下表中,我希望将完整的组作为输出,其中包含16 Value

ID Group Value
1    1   10
2    1   12
3    1   16
4    2   10
5    2   14
6    2   18
7    3   12
8    3   16
9    3   18

我想要的结果是

ID Group Value
1    1   10
2    1   12
3    1   16
7    3   12
8    3   16
9    3   18

根据文档和我得到的错误,GROUP BYPARTITION BYHAVING仅在总计总值时才有效。

2 个答案:

答案 0 :(得分:1)

您可以使用EXISTS

SELECT *
FROM tab t1
WHERE EXISTS (SELECT 1
              FROM tab t2
              WHERE t1.[group] = t2.[group]
                AND t2.[Value] = 16)

答案 1 :(得分:0)

试试这个:

SELECT * FROM tableName
WHERE group in 
(SELECT distinct group from tableName where value = 16)

内部查询将列出所有具有value = 16的组。外部查询将选择仅包含那些组的行。