我有一个fc,fc0,fc1,...
表,其中的列customers
和zip
包含每个客户的每个邮政编码。
我有一个cust_id
参考表,其中包含zip_state
和zip
列,其中包含每个州的每个邮政编码。
我想做的是为每个客户提供状态列表-类似于:
state
我想到了以下查询:
states cust_id
--------- ---------
AL,TX,FL 112
WA,VA 113
FL,CA 114
...呈现:
SELECT LISTAGG( state, ',' ) WITHIN GROUP( ORDER BY state ) states, '112' cust_id
FROM (SELECT DISTINCT state FROM zip_state WHERE zip IN (
SELECT zip FROM customers WHERE cust_id = '112'));
由于WHERE IN子句,我只能列出一位客户的状态。 如何修改查询,以便获得上述所需的结果集?
答案 0 :(得分:1)
使用group by
:
SELECT LISTAGG(state, ',' ) WITHIN GROUP( ORDER BY state ) states, cust_id
FROM (SELECT DISTINCT cust_id, state
FROM zip_state z JOIN
customers c
on c.zip = z.zip
) zc
GROUP BY cust_id;