我有一个服务表:
id | 服务 |
---|---|
11 | ser_1 |
22 | ser_2 |
33 | ser_3 |
44 | ser_4 |
55 | ser_5 |
66 | ser_6 |
77 | ser_7 |
88 | ser_8 |
1处理这种情况的方法是在加入它们之前使用LISTAGG-
SELECT U.u_id, U.name, O.combination
FROM (SELECT u_id, name, LISTAGG(service_id, ',') WITHIN GROUP (ORDER BY service_id) service_list
FROM users
GROUP BY u_id, name) U
JOIN (SELECT combination, LISTAGG(offer, ',') WITHIN GROUP (ORDER BY offer) offer_list
FROM (SELECT offer_1 offer, combination
FROM offer_table
UNION ALL
SELECT offer_2, combination
FROM offer_table
UNION ALL
SELECT offer_3, combination
FROM offer_table)
GROUP BY combination) O ON O.offer_list = U.service_list
演示。