我有一张桌子:
+--+---------+------+
|ID|Parent_ID|Status|
+--+---------+------+
|1 |0 | |
+--+---------+------+
|2 |0 | |
+--+---------+------+
|3 |1 |A |
+--+---------+------+
|4 |1 |B |
+--+---------+------+
|5 |1 |C |
+--+---------+------+
|6 |2 |A |
+--+---------+------+
|7 |2 |B |
+--+---------+------+
我想得到父母的身份证,以及孩子的数量,但我们会选择所有孩子都有状态A或B的小组
基于上表我只想看到: 2,2
select parent_id,count(1) from MYTABLE
where parent_id != 0
group by parent_id
HAVING (status) IN
('A','B')
答案 0 :(得分:2)
仅选择状态为零而不是A
或B
select parent_id, count(1)
from MYTABLE
where parent_id != 0
group by parent_id
HAVING sum(case when status NOT IN ('A','B') then 1 else 0 end) = 0
答案 1 :(得分:2)
试试这个:
SELECT Parent_ID, COUNT(ID)
FROM Table
WHERE Parent_ID <> 0
AND Parent_ID NOT IN
(
SELECT DISTINCT(Parent_ID) FROM Table WHERE Status NOT IN ('A', 'B')
)
GROUP BY Parent_ID