我正在尝试编写oracle sql,以便从表ABC中选择所有emplid,但不包括具有三个特定角色的emplid。示例如下:
TABLE1= ABC
EMPLID将扮演更重要的角色
______________________
111*苹果
111元人民币、中国元人民币、印度元人民币、芒果元人民币。
111* Red_Apple
222%苹果公司*苹果公司
222元人民币*
222* Red_Mango
222个苹果,一个香蕉。
333%的苹果,中国的苹果
333元人民币*
444%的苹果,中国的苹果。
444元人民币*
* Red_Mango
555元人民币*葡萄
666元人民币*
666元人民币*葡萄
666元人民币、苹果、蓝莓。
TABLE2 =详细信息
EMPLID将其名称添加到电子邮件中。
__________________________________
111* info@email.com *info@email.com
222* info@email.com *info@email.com
以此类推...
基本上,在上面的例子中,因为Apple、Mango和Red%是需要排除的三个角色。sql应返回222、333、555和666的EMPLID和名称。它应该排除111和444
我试着创建子选择,但仍然不起作用。enter code here
。任何建议或帮助都是非常感谢的。
发布于 2016-07-21 13:15:42
使用条件聚合:
SELECT t1.EMPLID,
t1.NAME,
t1.EMAIL
FROM DETAILS t1
INNER JOIN
(
SELECT EMPLID
FROM ABC
GROUP BY EMPLID
HAVING SUM(CASE WHEN ROLE = 'Apple' OR ROLE = 'Mango' OR ROLE LIKE 'Red%'
THEN 1 ELSE 0 END) < 3
) t2
ON t1.EMPLID = t2.EMPLID
https://stackoverflow.com/questions/38495332
复制相似问题