设为首页 加入收藏

TOP

整体顺序部分倒序
2014-11-24 02:57:21 来源: 作者: 【 】 浏览:5
Tags:整体 顺序 部分 倒序
整体顺序部分倒序
创建表语句
[sql] 
USE [master]  
GO  
  
/****** Object:  Table [dbo].[Table_4]    Script Date: 08/09/2013 14:30:58 ******/  
SET ANSI_NULLS ON  
GO  
  
SET QUOTED_IDENTIFIER ON  
GO  
  
SET ANSI_PADDING ON  
GO  
  
CREATE TABLE [dbo].[Table_4](  
    [time] [datetime] NULL,  
    [City] [varchar](10) NULL,  
    [count] [int] NULL  
) ON [PRIMARY]  
  
GO  
  
SET ANSI_PADDING OFF  
GO  

插入测试数据
[sql] 
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-01 00:00:00.000'   ,   '北京市'   ,   14  );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-01 00:00:00.000'   ,   '天津市'   ,   92  );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-01 00:00:00.000'   ,   '上海市'   ,   8   );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-01 00:00:00.000'   ,   '大连市'   ,   3   );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-01 00:00:00.000'   ,   '无锡市'   ,   142 );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-01 00:00:00.000'   ,   '深圳市'   ,   4   );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-01 00:00:00.000'   ,   '南京市'   ,   1   );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-02 00:00:00.000'   ,   '北京市'   ,   11  );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-02 00:00:00.000'   ,   '天津市'   ,   79  );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-02 00:00:00.000'   ,   '上海市'   ,   3   );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-02 00:00:00.000'   ,   '无锡市'   ,   92  );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-02 00:00:00.000'   ,   '深圳市'   ,   4   );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-03 00:00:00.000'   ,   '北京市'   ,   10  );  
insert into [master].[dbo].[Table_4] ([time],[City],[count]) values(    '2013-07-03 00:00:00.000'   ,   '天津市'   ,   80  );  

原表的查询结果
期望的结果是整体按照城市和时间顺序排序,然后在此基础上,天津市要按时间倒序排序,下面给出期望的结果
可以看出,整体是按城市拼音和时间顺序排序,但是在天津这个城市这里是倒序排序的,实现SQL:
[sql] 
select * from  
(  
  SELECT ROW_NUMBER() over(partition by City order by time) as row_id,*  
  FROM [master].[dbo].[Table_4] t  
) a order by City ,(case City when '天津市' then -1*row_id else row_id end)  

这里用了一个小技巧,就是对于天津的row_id做取负数处理,这样排序下来就自然是倒序
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇数据库优化原理 下一篇部分具有统计功能的TSQL语句(例..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)
·到底应该用MySQL还是 (2025-12-24 15:18:11)
·进入Linux世界大门的 (2025-12-24 14:51:47)
·Download Linux | Li (2025-12-24 14:51:44)