gpt4 book ai didi

sql - 如何根据前一行中的值对sql结果进行排序?

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

我正在尝试按结果集列中的值对 sql 数据选择进行排序。数据看起来像:

(这个数据没有正确排序,只是一个例子)

ID      projectID   testName                                objectBefore    objectAfter
=======================================================================================
13147 280 CDM-710 Generic TP-0000120 TOC~~@~~ -1 13148
1145 280 3.2 Quadrature/Carrier Null 25 Deg C 4940 1146
1146 280 3.2 Quadrature/Carrier Null 0 Deg C 1145 1147
1147 280 3.3 External Frequency Reference 1146 1148
1148 280 3.4 Phase Noise 50 Deg C 1147 1149
1149 280 3.4 Phase Noise 25 Deg C 1148 1150
1150 280 3.4 Phase Noise 0 Deg C 1149 1151
1151 280 3.5 Output Spurious 50 Deg C 1150 1152
1152 280 3.5 Output Spurious 25 Deg C 1151 1153
1153 280 3.5 Output Spurious 0 Deg C 1152 1154
............
18196 280 IP Regression Suite 18195 -1

数据的顺序基于 objectBefore 和 objectAfter 列。第一行总是在 objectBefore = -1 时,最后一行在 objectAfter = -1 时。在上面的示例中,第二行将是 ID 13148,因为它是第 1 行 objectAfter 所等于的。有没有办法编写一个以这种方式对数据进行排序的查询?

最佳答案

这实际上是对链表进行排序:

WITH SortedList (Id, objectBefore , projectID, testName, Level)
AS
(
SELECT Id, objectBefore , projectID, testName, 0 as Level
FROM YourTable
WHERE objectBefore = -1
UNION ALL
SELECT ll.Id, ll.objectBefore , ll.projectID, ll.testName, Level+1 as Level
FROM YourTable ll
INNER JOIN SortedList as s
ON ll.objectBefore = s.Id
)

SELECT Id, objectBefore , projectID, testName
FROM SortedList
ORDER BY Level

您可以在 this post 中找到更多详细信息

关于sql - 如何根据前一行中的值对sql结果进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20435215/

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