Sql 按两列对序列排序
当前列表 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,谢谢 您可以尝试以下方法: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
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