Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按两列对序列排序_Sql_Sorting_Seq - Fatal编程技术网

Sql 按两列对序列排序

Sql 按两列对序列排序,sql,sorting,seq,Sql,Sorting,Seq,当前列表 Item# | To | From | A100 | 000000 | 803441 | A200 | 803441 | 000000 | A300 | 000000 | 542032 | A400 | 181061 | 000000 | A500 | 000000 | 181061 | A600 | 542032 | 000000 | 项目#|至|自| A100 | 000000 | 803441| 20

当前列表

Item# | To | From | A100 | 000000 | 803441 | A200 | 803441 | 000000 | A300 | 000000 | 542032 | A400 | 181061 | 000000 | A500 | 000000 | 181061 | A600 | 542032 | 000000 | 项目#|至|自| A100 | 000000 | 803441| 200亿欧元| A300 | 000000 | 542032| A400 | 181061 | 000000| 500 | 000000 | 181061| A600 | 542032 | 000000| 正确的排序列表*我不确定这是否是100%正确的结果

Item# | To | From | A100 | 000000 | 803441 | A200 | 803441 | 000000 | A500 | 000000 | 181061 | A400 | 181061 | 000000 | A300 | 000000 | 542032 | A600 | 542032 | 000000 | 项目#|至|自| A100 | 000000 | 803441| 200亿欧元| 500 | 000000 | 181061| A400 | 181061 | 000000| A300 | 000000 | 542032| A600 | 542032 | 000000| 首先它需要按项目排序,但第二部分我不知道如何解释,基本上一个项目需要取出(#:00000),然后才能放入新项目

思考有困难,也许我发烧了,但我在想这是否与合并#有关

另外,我需要这个查询工作只为sql 2008,谢谢

您可以尝试以下方法:

order by
   CASE WHEN to > from THEN to ELSE from END
  ,to
如果您想按最低的项目订购#首先您可以应用窗口聚合:


为什么在
542032
之前有
181061
的行,而在
803441
之后有
。SQL 2008是指Microsoft SQL Server 2008,还是指SQL:2008 ANSI标准?Microsoft SQL Server 2008
SELECT *

FROM tab
ORDER BY 
   Min(Item#) 
   Over (PARTITION BY CASE WHEN to > from THEN to ELSE from END)
  ,to