检查排名是否相同 - SQL

Checking if the rank is the same - TSQL

我编写了一个代码来检索客户所下订单的详细信息并返回下订单的日期。

USE[tsql2012];
WITH CTE_1
AS
(
select 
    [ID] = customers.custid
    ,[Name] = contactname
    ,[OrderID] = orders.orderid
    ,[Order Date] = orderdate 
    ,[Date] = format(orderdate,'MMMM-yy')

from sales.orders
left join sales.OrderDetails   on OrderDetails.orderid = orders.orderid
left join sales.Customers      on orders.custid = customers.custid
)

select 
    [ID] 
    ,[Name] 
    ,[OrderID]  
    ,[Date]
    ,[Rank] = DENSE_RANK() OVER (PARTITION BY [DATE] ORDER BY [ORDERID])

FROM CTE_1

这是我得到的代码

ID  NAME                   ORDERID    DATE     RANK
10  Bassols, Pilar Colome   10492   April-07    1
10  Bassols, Pilar Colome   10493   April-07    1

如何检查 Rank 列是否包含超过 1 个相同排名数字的实例,所以如果两个订单是在同一天下达的,它应该像这样更改日期列:

ID  NAME                   ORDERID    DATE      RANK
10  Bassols, Pilar Colome   10492   April-07(1)  1
10  Bassols, Pilar Colome   10493   April-07(2)  1

下次请分享示例数据,最好以带有 DML 的 DDL 和您预期的输出形式提供。

试试这个:

,CONCAT([Date], '(',ROW_NUMBER() OVER(PARTITION BY [ID],[Date] ORDER BY [OrderId]),')') AS DateWithIndex

如果我没有弄错的话,这应该将您给定的日期与按分组条件划分的 运行 数字连接起来...