SQL获取非重复值[Oracle SQL * Plus]

时间:2011-06-09 16:00:34

标签: oracle plsql

我有一个包含CustomerID和SalespersonID的表(order_t),我希望显示SalespersonID以及与之关联的所有CustomerID。

我尝试使用SELECT DISTINCT

SELECT DISTINCT salespersonid, customerid
FROM order_t;

但这将重复销售人员。

这是一个表格样本

salespersonid   customerid
--------------- ---------------
15              1
15              2
15              3
16              4
16              5
17              6

我希望将此数据集作为结果

salespersonid   customerid
--------------- ---------------
15              1
                2
                3
16              4
                5
17              6
18              4
                5
                9

这完美无缺

BREAK ON sid
SELECT DISTINCT salespersonid sid, customerid cid
FROM ORDER_T
ORDER BY salespersonid;

2 个答案:

答案 0 :(得分:2)

在SQL * Plus中,您将执行以下操作:

SQL> BREAK ON sid

SQL> SELECT salespersonid sid, customerid cid
       FROM order_t
      ORDER BY salespersonid;

应该给你看起来像这样的输出(未经测试):

SID     CID
-----   ------
    1        1
             2
             3
    2        1
             7
    3        1
...

编辑:

如果您希望每个salespersonid都有一行,请参阅this Stackoverflow question了解如何执行此操作。这样做并非易事。

答案 1 :(得分:0)

SELECT DISTINCT将返回salespersonid和customerid的非重复组合。

换句话说,它可以返回相同的salespersonid但具有不同的customerid。

e.g。 1,1
1,2
1,3 ......

但它不会返回1,1 | 1,2 |再次1,3