得到一个组的多个值想象我有数据的表如下:逻辑HAVING子句中由结果
ROLE_ID | USER_ID | CODE
---------------------------------
14 | USER A | 001
15 | USER A | 002
11 | USER B | 004
13 | USER D | 005
13 | USER A | 001
15 | USER B | 009
15 | USER D | 005
12 | USER C | 004
15 | USER C | 008
13 | USER D | 007
15 | USER D | 007
我想要得到的用户ID和代码仅具有13个15 role_ids。因此,基于上述数据,我想回去以下
USER D | 005
USER D | 007
我有下面的查询,但是,它只能带回一个,不能同时使用。
SELECT a.user_id, a.code
FROM my_table a
WHERE a.ROLE_ID in (13,15,11,14)
group by a.USER_ID, a.code
having sum(case when a.role_id in (13,15) then 1 else 0 end) = 2
and sum(case when a.role_id in (11,14) then 1 else 0 end) = 0
ORDER BY USER_ID
上面的查询不仅带来
USER D | 005
而不是
USER D | 005
USER D | 007
看起来它工作得很好:http://sqlfiddle.com/#!4/2b492/2/0 – EthanB
不知道sqlfiddle。真棒网站。我给的例子是我的表的子集。因为,它的工作,我会尝试添加更多列在我的表中。 – Anthony