SQL中的排序
我试图在SQL查询中使用SQL中的排序,sql,sql-server,sql-order-by,Sql,Sql Server,Sql Order By,我试图在SQL查询中使用CASE语句在orderby子句中实现一个“自定义”排序,但它给了我一些奇怪的排序 以下是我迄今为止的订购依据条款: ORDER BY CASE WHEN CheckInStatus <> 'Cancelled' AND ArrivalTime is null AND GETDATE() > DATEADD(mi,30, CAST(StartDateTime AS DATETIME))THEN 1 WHEN
CASE
语句在orderby
子句中实现一个“自定义”排序,但它给了我一些奇怪的排序
以下是我迄今为止的订购依据条款:
ORDER BY
CASE WHEN
CheckInStatus <> 'Cancelled' AND ArrivalTime is null AND GETDATE() > DATEADD(mi,30, CAST(StartDateTime AS DATETIME))THEN 1
WHEN
CheckInStatus <> 'Cancelled' AND ArrivalTime is null AND GETDATE() <= DATEADD(mi,30, CAST(StartDateTime AS DATETIME)) THEN 2
WHEN ArrivalTime is not null THEN 3
WHEN CheckInStatus='Cancelled' THEN 4
ELSE 5
END,
StartDateTime, ScanTechName
发生了几件事
我猜它是根据您选择的列进行排序的,因为当您有一个查询时
select empno, empname,sal from emp order by 2,3
它将根据empname和sal对查询进行排序,因为“order by 2,3”表示第2列和第3列。检查select列表中的列号。将CASE语句移动到select子句中,以便清楚地看到结果。考虑分离逻辑到达时间和校验状态。因为你的2状态包括“到达时间为空”,所以第二行不可能有2状态。您的帖子中一定有错误。请发布完整的查询,而不仅仅是订单。
select empno, empname,sal from emp order by 2,3