Sql select-case语句中的排序

Sql select-case语句中的排序,sql,sql-server,Sql,Sql Server,是否有办法在select case语句中仅按一列排序?让我们只说城市提升的顺序 SELECT StudentLocation = CASE WHEN @IsRegistered IS NOT NULL AND @IsInClass IS NOT NULL THEN s.InClassLocation WHEN @IsRegistered IS NOT NULL AND @IsInClass IS NULL THEN s.OnlineLocation ELSE s.City +

是否有办法在select case语句中仅按一列排序?让我们只说城市提升的顺序

SELECT 
StudentLocation = 
CASE
  WHEN @IsRegistered IS NOT NULL AND @IsInClass IS NOT NULL THEN s.InClassLocation
  WHEN @IsRegistered IS NOT NULL AND @IsInClass IS NULL THEN s.OnlineLocation 
  ELSE s.City + ', ' + s.State
END

您忽略了表和from/where子句,但假设s是您要查询的表的别名,您可以使用order,方法与您通常使用的方法相同:

SELECT 
StudentLocation = 
CASE
  WHEN @IsRegistered IS NOT NULL AND @IsInClass IS NOT NULL THEN s.InClassLocation
  WHEN @IsRegistered IS NOT NULL AND @IsInClass IS NULL THEN s.OnlineLocation 
  ELSE s.City + ', ' + s.State
END
FROM someTable as s
ORDER BY s.City ASC;

更正城市

您是否也有一个来自哪里的地址?可能我不明白目的。但是为什么您不喜欢这样选择*(SELECT StudentLocation=CASE当IsRegistered不为NULL且IsInClass不为NULL时,则s.InClassLocation当IsRegistered不为NULL且IsInClass为NULL时,则s.OnlineLocation ELSE s.City+,“+s.State END)按顺序排列