我正在编写查询,并且希望它按一系列顺序进行排序。前七个记录应按1,2,3,4,5,6和7排序。然后应重新开始。
我已经尝试过分区,last_value,但我无法弄清楚。
这是SQL代码:
set language swedish;
select
tblridgruppevent.id,
datepart(dw,date) as daynumber,
tblRidgrupper.name
from
tblRidgruppEvent
join
tblRidgrupper on tblRidgrupper.id = tblRidgruppEvent.ridgruppid
where
ridgruppid in (select id from tblRidgrupper
where corporationID = 309 and Removeddate is null)
and tblridgruppevent.terminID = (select id from tblTermin
where corporationID = 309 and removedDate is null and isActive = 1)
and tblridgrupper.removeddate is null
order by
datepart(dw, date)
这是结果的示例:
5887 1 J2
5916 1 J5
6555 2 Junior nybörjare
6004 2 Morgonridning
5911 3 J2
6467 3 J5
这就是我所期望的:
5887 1 J2
6555 2 Junior nybörjare
5911 3 J2
5916 1 J5
6004 2 Morgonridning
6467 3 J5
通过进一步缩小并考虑您要尝试执行的操作以及如何执行此操作,您可能会获得一些价值。SQL在逐行处理以及行从其前一行借来详细信息的操作方面往往表现很差。如果您需要更改重复的范围(从7切换到10或4等),也可能会遇到问题。
如果仍然需要某个数字,则可以将ROW_NUMBER与一个模数相加以获得重复的增量,然后将其添加到select / where条件中。它看起来像这样:
((ROW_NUMBER() OVER(ORDER BY column ASC) -1) % 7) + 1 AS Number
外部的+1将结果显示为1-7而不是0-6,内部的-1处理偏离一个问题(该列从2开始而不是1)。我觉得有一种更好的方法可以解决此问题,但目前还没有解决。
编辑:再次查看您的帖子,看起来您正在处理一周中的几天。即使未在select语句中显示日期,也可以按日期进行排序,这可能是使此日期生效所需的全部。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句