检查排名是否相同 - 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
如果我没有弄错的话,这应该将您给定的日期与按分组条件划分的 运行 数字连接起来...
我编写了一个代码来检索客户所下订单的详细信息并返回下订单的日期。
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
如果我没有弄错的话,这应该将您给定的日期与按分组条件划分的 运行 数字连接起来...