sql排序的问题

bossahack 2018-03-15 06:19:20

如图,有两个列 ,status列只有0个1两个值,如果根据status列对name列进行排序
要求,status为0时name列升序,status为1时,name列降序
...全文
209 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bossahack 2018-03-15
  • 打赏
  • 举报
回复
引用 3 楼 sinat_28984567 的回复:
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([id] int,[status] int,[name] nvarchar(21))
Insert #T
select 1,0,N'a' union all
select 2,1,N'b' union all
select 3,1,N'c' union all
select 4,1,N'd' union all
select 5,0,N'e' union all
select 6,0,N'f'
Go
--测试数据结束
SELECT  *
FROM    #T
ORDER BY status ,
        CASE WHEN status = 0 THEN ASCII(name)
             ELSE -ASCII(name)
        END 
棒棒哒,灰常感谢
二月十六 版主 2018-03-15
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([id] int,[status] int,[name] nvarchar(21))
Insert #T
select 1,0,N'a' union all
select 2,1,N'b' union all
select 3,1,N'c' union all
select 4,1,N'd' union all
select 5,0,N'e' union all
select 6,0,N'f'
Go
--测试数据结束
SELECT *
FROM #T
ORDER BY status ,
CASE WHEN status = 0 THEN ASCII(name)
ELSE -ASCII(name)
END


bossahack 2018-03-15
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
最后结果什么样的
绿色框的就是排序结果
二月十六 版主 2018-03-15
  • 打赏
  • 举报
回复
最后结果什么样的

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧