SQL Counting Distinct Rows并输出答案

时间:2016-10-13 03:40:58

标签: sql count row distinct

我正在尝试计算sql中表中不同的行,这些行将输出对应于订单的值。

我有CustomerID和OrderNumber,如果客户在特定日期在系统中放置了超过1个订单,我希望能够用下面的数字标记每个不同的订单(这个数字需要随着每次更改而增加或者来自多行的订单号(因为行还包含所购买的每件商品)

OrderNumber CustomerID      Seq Number
BINV0024536 FOBJAMBLU       1
BINV0024536 FOBJAMBLU       1
BINV0024789 FOBJAMBLU       2
BINV0024789 FOBJAMBLU       2

2 个答案:

答案 0 :(得分:1)

对于SQL SERVER,您可以使用DENSE_RANK()。

SELECT OrderNumber, CustomerID, 
DENSE_RANK() OVER(ORDER BY CustomerID, OrderNumber) AS  Seq 
FROM [YOURTABLE]

如果您想使用不同的customerID重置seq,那么您还必须使用PARTITION

SELECT OrderNumber, CustomerID, 
DENSE_RANK() OVER(PARTITION BY CustomerID ORDER BY CustomerID, OrderNumber) AS  Seq 
FROM [YOURTABLE]

答案 1 :(得分:0)

您可以生成虚拟rownum并从另一个select中加入:

SELECT ot.orderNumber, ot.customerId, usr.rowCounter
    FROM Order ot
        INNER JOIN
           (SELECT otr.orderNumber, otr.customerId, rownum as rowCounter
               FROM Order otr
               GROUP BY otr.orderNumber, otr.customerId
               ORDER BY otr.orderNumber, otr.customerId
           ) usr
           ON usr.orderNumber = ot.orderNumber AND usr.customerId = ot.orderNumber