AUTH_ID UNAME PLATFORM_NAME
这三个要是唯一的,直接分组就行了,如果不唯一:
SQL> select * from t;
ID AUTH_ID CARD_NO UNAME PLATFORM_NAME
---------- ---------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---
4 99 CR9192 张三 CRM
5 100 ER2881 张三 ERP
6 102 CR9193 小差 CRM
7 100 OA0319 邓军 OA
8 103 ER7654 王五 ERP
9 104 CR9076 赵四 CRM
10 105 ER2881 张三 ERP
13 105 ER2881 张三 ERP 11 106 ER2881 邓军 OA
12 106 ER2881 张三 ERP
10 rows selected
SQL>
SQL> select auth_id from t
2 where (t.uname,t.platform_name)
3 in (('张三','ERP'),('邓军','OA'))
4 group by t.auth_id
5 having count(distinct auth_id||'-------'||uname||'-------'||platform_name)=2;
AUTH_ID
----------
100
106
过滤105的,如果组是条件查询的,那就将(('张三','ERP'),('邓军','OA')) 和2改为查询的就可以了