gpt4 book ai didi

带分组的 SQL ORDER BY

转载 作者:行者123 更新时间:2023-12-04 13:43:04 25 4
gpt4 key购买 nike

我有以下查询

SELECT Id, Request, BookingDate, BookingId FROM Table ORDER BY Request DESC, Date

如果一行具有类似的 ForeignKeyId,我希望它在下一个有序行之前进入,例如:
Request         Date  ForeignKeyId
Request3 01-Jun-11 56
Request2 03-Jun-11 89
NULL 03-Jun-11 89
Request1 05-Jun-11 11
NULL 20-Jul-11 57

我一直在研究 RANK 和 OVER,但还没有找到简单的解决方法。

编辑

我在上面进行了编辑以使用来自 Andomar 的答案的以下查询显示实际字段和粘贴的数据
select  *
from (
select row_number() over (partition by BookingId order by Request DESC) rn
, Request, BookingDate, BookingID
from Table
WHERE Date = '28 aug 11'
) G
order by
rn
, Request DESC, BookingDate

1 ffffff 23/01/2011 15:57 350821
1 ddddddd 10/01/2011 16:28 348856
1 ccccccc 13/09/2010 14:44 338120
1 aaaaaaaaaa 21/05/2011 20:21 364422
1 123 17/09/2010 16:32 339202
1 NULL NULL
2 gggggg 08/12/2010 14:39 346634
2 NULL NULL
2 17/09/2010 16:32 339202
2 NULL 10/04/2011 15:08 361066
2 NULL 02/05/2011 14:12 362619
2 NULL 11/06/2011 13:55 366082
3 NULL NULL
3 16/10/2010 13:06 343023
3 22/10/2010 10:35 343479
3 30/04/2011 10:49 362435

预订 ID 的 339202 应该并排出现,但不要出现

最佳答案

您可以 partition按 ForeignKeyId,然后对它们的“头部”下方的每一秒或更低的行进行排序。将“头部”定义为该 ForeignKeyId 的第一行.例如,对 Request 进行排序:

; with  numbered as 
(
select row_number() over (partition by ForeignKeyID order by Request) rn
, *
from @t
)
select *
from numbered n1
order by
(
select Request
from numbered n2
where n2.ForeignKeyID = n1.ForeignKeyID
and n2.rn = 1
)
, n1.Request
子查询是必需的,因为 SQL Server 不允许 row_numberorder by条款。
完整示例位于 SE Data .

关于带分组的 SQL ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com