查询返回更多行

时间:2019-04-27 12:25:23

标签: sql

我有两个桌子。 product_type列出带有产品ID的产品的名称。与共享的5种产品类型具有相同的产品ID(1),以及其他4种具有唯一产品ID(2至9)的产品类型。其他表是商品。它具有客户ID列表以及与之关联的产品模板ID。

我想获取客户正在使用的产品列表。但是,如果有两个客户使用同一产品,我将得到一个包含重复产品行的列表。我只想获得所有客户正在使用的产品的唯一列表。

产品表

#bind =127.0.0.1

客户表

Product  Product_id
AML        1
EDU        1
EXM        1
JEXM       2
JFSA       3

查询:

Customer_id   Product_id
112            1
113            2
114            1
115            3
116            4
117            2
  

Blockquote

1 个答案:

答案 0 :(得分:0)

我想你想要

SELECT c.customer_id,
       LISTAGG(p.product, ', ') WITHIN GROUP (ORDER BY p.product) as products
FROM customers c JOIN
     products p
     ON c.PRODUCT_ID = p.PRODUCT_ID       
GROUP BY c.customer_id;

对于每个客户,这将给出该客户的产品列表。

我基于您的样本数据。我看不到您的查询和示例数据之间的关系。

编辑:

如果要让任何客户使用所有产品,只需执行以下操作:

select distinct c.product_id
from customers c;