Oracle如何在join中使用distinct命令

问题描述 投票:0回答:1

我试图从一列中获取不同值的列表,同时通过另一个表上的内部联接获取关键列数据,如下所示。表 a 和表 b 保存客户端的关键列。 表 b 包含列产品,该产品具有针对一系列客户数量的一系列值

表 a 仅保存客户数字

表b保存客户编号和产品

Client       product
1.                A
1.                  B
2.                  B
3.                   C

我想找到客户在表a和表b中的不同产品值的列表 有任何建议欢迎

oracle join distinct
1个回答
0
投票

查找表中客户所在位置的不同产品价值列表 a 和表 b

正如您在下面会注意到的,“不同”不适用于连接

SELECT DISTINCT
      b.Product
FROM TABLEA a
INNER JOIN TABLEB b ON a.Client = b.Client
;

内连接确保客户端同时存在于 A 和 B 中,然后“选择不同”会删除产品列表中的任何重复项。

SELECT
      b.Product
    , COUNT(*) AS countof
FROM TABLEA a
INNER JOIN TABLEB b ON a.Client = b.Client
GROUP BY
      b.Product
;

另一种方法是使用

group by
来列出客户位于 A 和 B 的产品的不同列表,这样你就可以做一些额外的事情,例如计算产品被引用的频率。

SQLFiddle.com

尝试一下
© www.soinside.com 2019 - 2024. All rights reserved.