Oracle如何在join中使用distinct命令

fv2wmkja  于 2023-06-05  发布在  Oracle
关注(0)|答案(1)|浏览(198)

我试图从一列不同的值列表,同时获得另一个表的内部连接的关键列数据如下..表A和表B持有客户端的关键列。表B保存列乘积,列乘积具有一个值范围和一个客户端编号范围
表a仅保存客户端编号
表b保存客户编号和产品

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

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

fdx2calv

fdx2calv1#

查找客户端位于表a和表b中的不同产品值的列表
正如您将在下面注意到的,“distinct”并不应用于连接

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中的产品的不同列表,这种方式的额外好处是,您可以做一些额外的事情,例如计算产品被引用的频率。
在www.example.com上试试SQLFiddle.com

相关问题