如果在午夜过后,我根据到达时间的出发时间尝试订购TSQL表时遇到问题。
正如您所看到的那样,我按时间列排序最早到最新,但左侧有一个标志 location_type ,表示第一个出发点是 LO 排。所以它应该从此开始并以 LT 行结束。
╔══════════════════════════════════════════════════════════════════════════════════════════════╗
║ location_type nlcdesc arrival pass departure time ║
╠══════════════════════════════════════════════════════════════════════════════════════════════╣
║ LI WILLESDEN BRENT SDGS (FL) 0110 0110 NULL 0110 ║
║ LI WEST LONDON JN NULL 0204 NULL 0204 ║
║ LI NORTH JUNCTION NULL 0322 NULL 0322 ║
║ LI RUGBY TRENT VALLEY JUNCTION NULL 0405 NULL 0405 ║
║ LT SPEKE JN 0430 NULL NULL 0430 ║
║ LO LIVERPOOL GARSTON FRTLNR DEPOT NULL NULL 2153 2153 ║
║ LI ACTON BRIDGE NULL 2223 NULL 2223 ║
║ LI STAFFORD NULL 2255 NULL 2255 ║
║ LI CHANNELSEA JN NULL 2331 NULL 2331 ║
║ LI DAGENHAM DOCK NULL 2355 NULL 2355 ║
╚══════════════════════════════════════════════════════════════════════════════════════════════╝
所以我希望结果看起来像这个
╔══════════════════════════════════════════════════════════════════════════════════════════════╗
║ location_type nlcdesc arrival pass departure time ║
╠══════════════════════════════════════════════════════════════════════════════════════════════╣
║ LO LIVERPOOL GARSTON FRTLNR DEPOT NULL NULL 2153 2153 ║
║ LI ACTON BRIDGE NULL 2223 NULL 2223 ║
║ LI STAFFORD NULL 2255 NULL 2255 ║
║ LI CHANNELSEA JN NULL 2331 NULL 2331 ║
║ LI DAGENHAM DOCK NULL 2355 NULL 2355 ║
║ LI WILLESDEN BRENT SDGS (FL) 0110 0110 NULL 0110 ║
║ LI WEST LONDON JN NULL 0204 NULL 0204 ║
║ LI NORTH JUNCTION NULL 0322 NULL 0322 ║
║ LI RUGBY TRENT VALLEY JUNCTION NULL 0405 NULL 0405 ║
║ LT SPEKE JN 0430 NULL NULL 0430 ║
╚══════════════════════════════════════════════════════════════════════════════════════════════╝
正如你所看到的那样,从以LO标记的出发行开始,以及以LT标记的到达行结束。跨越2355到0110行的午夜
非常感谢任何帮助,非常感谢
答案 0 :(得分:2)
您可以使用CASE
之类的:
<强> SQLFiddleDemo 强>
SELECT *
FROM your_table
ORDER BY
CASE
WHEN [time] >= 1200 AND [time] <=2359 THEN 0
ELSE 1
END ASC
,[time]
您可以根据需要设置起始[time] >=1200
,例如1800
。