按两列

时间:2018-04-11 20:10:46

标签: sql sorting seq

当前列表

Item# |  To      |  From    |
A100  |  000000  |  803441  |
A200  |  803441  |  000000  |
A300  |  000000  |  542032  |
A400  |  181061  |  000000  |
A500  |  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  |

首先它需要按Item#排序,但第二部分我不知道如何解释,基本上需要取出一个项目(#:00000)才能将新项目重新放入

思考困难,也许我的发烧阻碍了,但我在想是否与合并#?

另外,我需要这个查询仅适用于sql 2008,谢谢!

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

order by
   CASE WHEN to > from THEN to ELSE from END
  ,to

如果您想按最低的项目#首先订购,则可以应用窗口聚合

SELECT *

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