在(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 BY
或PARTITION BY
和HAVING
仅在总计总值时才有效。
答案 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
的组。外部查询将选择仅包含那些组的行。