OracleSql Join several column



我有一个服务表:

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

演示。

最新更新