我有一张表格,包含四列:
每一行都与另一行相关联,由
例如,
我希望按照以下条件对表进行排序:
如果
因此,期望的结果应该如下所示:
第一行成为第一行,因为表格
因此,由
我尝试了以下查询,但结果错误:
我做错了什么?或者我该怎么做呢?
ID
、isError
、SolidLine
和HighestError
。每一行都与另一行相关联,由
SolidLine
列确定。因此,表格中有两行相关联。例如,
ID
为1和2的行由SolidLine
(5)关联。----------------------------------------------------------------------
| ID | isError | SolidLine | HighestError
----------------------------------------------------------------------
| 1 | 0 | 5 | 1
| 2 | 0 | 5 | 1
| 3 | 0 | 8 | 1
| 4 | 0 | 8 | 1
| 5 | 1 | 10 | 50
| 6 | 0 | 10 | 1
| 7 | 1 | 4 | 80
| 8 | 0 | 4 | 1
| 9 | 1 | 7 | 80
| 10 | 0 | 7 | 1
| 11 | 0 | 3 | 1
| 12 | 0 | 3 | 1
----------------------------------------------------------------------
我希望按照以下条件对表进行排序:
如果
isError
为1,则按SolidLine
的下一行进行排序,然后按HighestError
排序。因此,期望的结果应该如下所示:
----------------------------------------------------------------------
| ID | isError | SolidLine | HighestError
----------------------------------------------------------------------
| 7 | 1 | 4 | 80
| 8 | 0 | 4 | 1
| 9 | 1 | 7 | 80
| 10 | 0 | 7 | 1
| 5 | 1 | 10 | 50
| 6 | 0 | 10 | 1
| 1 | 0 | 5 | 1
| 2 | 0 | 5 | 1
| 3 | 0 | 8 | 1
| 4 | 0 | 8 | 1
| 11 | 0 | 3 | 1
| 12 | 0 | 3 | 1
----------------------------------------------------------------------
第一行成为第一行,因为表格
isError
中 HighestError
的值最大且等于1。接下来的一行将与 ID
= 8 匹配,因为它的 SolidLine
值与 ID
= 7 的行相同。
SolidLine
总是成对出现,不取决于 isError
列。因此,由
SolidLine
绑定的行对应始终保持在一起。我尝试了以下查询,但结果错误:
--it breaks SolidLine ordering.
SELECT ID, isError, SolidLine, HighestError
FROM SolidThreads
ORDER BY SolidLine, isError, HighestError desc, id
并且:
SELECT
ROW_NUMBER() OVER (PARTITION BY SolidLine ORDER BY isError DESC) [RowNumber],
ID, isError, SolidLine, HighestError
FROM SolidThreads
ORDER BY HighestError desc, id
我做错了什么?或者我该怎么做呢?
isError
等于 1,并且表中的HighestError
具有最大值,则下一行将与ID
=8 配对,因为其SolidLine
值与ID
=7的那一行相同。 - StepUpisError
和HighestError
对它们进行排序。 - StepUp