SQL查询排序问题,希望大神帮忙解决!
建表语句:
CREATE TABLE Test(
[Id] [nvarchar](50) PRIMARY KEY NOT NULL,
[isCuiDan] [int] NOT NULL,
[ComeDate] [date] NOT NULL,
[ArriveTime] [int] NOT NULL,
[HotelName] [nvarchar](50) NOT NULL
)
插数据:
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('129324',0,'2012-08-19',9,'A')
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('235984',0,'2012-07-09',23,'C')
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('305241',1,'2013-03-03',18,'B')
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('240566',0,'2012-06-18',5,'A')
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('102351',0,'2012-09-10',17,'D')
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('123052',0,'2013-04-03',19,'B')
现查询语句:
select * from Test t
order by t.isCuiDan desc,t.ComeDate,t.ArriveTime
查询结果:
Id isCuiDan ComeDate ArriveTime HotelName
------- ---------- ----------- --------- ---------
305241 1 2013-03-03 18 B
240566 0 2012-06-18 5 A
235984 0 2012-07-09 23 C
129324 0 2012-08-19 9 A
102351 0 2012-09-10 17 D
123052 0 2013-04-03 19 B
提问:
如何在上面的查询语句的基础上把结果变成:
Id isCuiDan ComeDate ArriveTime HotelName
------- ---------- ----------- --------- ---------
305241 1 2013-03-03 18 B
123052 0 2013-04-03 19 B
240566 0 2012-06-18 5 A
129324 0 2012-08-19 9 A
235984 0 2012-07-09 23 C
102351 0 2012-09-10 17 D
就是在上面排序以后的结果更具酒店名称如果出现了第一次那么接下来都是同酒店的,显示完以后再是别的
CREATE TABLE Test(
[Id] [nvarchar](50) PRIMARY KEY NOT NULL,
[isCuiDan] [int] NOT NULL,
[ComeDate] [date] NOT NULL,
[ArriveTime] [int] NOT NULL,
[HotelName] [nvarchar](50) NOT NULL
)
插数据:
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('129324',0,'2012-08-19',9,'A')
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('235984',0,'2012-07-09',23,'C')
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('305241',1,'2013-03-03',18,'B')
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('240566',0,'2012-06-18',5,'A')
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('102351',0,'2012-09-10',17,'D')
INSERT INTO Test([Id],[isCuiDan],[ComeDate],[ArriveTime],[HotelName]) VALUES
('123052',0,'2013-04-03',19,'B')
现查询语句:
select * from Test t
order by t.isCuiDan desc,t.ComeDate,t.ArriveTime
查询结果:
Id isCuiDan ComeDate ArriveTime HotelName
------- ---------- ----------- --------- ---------
305241 1 2013-03-03 18 B
240566 0 2012-06-18 5 A
235984 0 2012-07-09 23 C
129324 0 2012-08-19 9 A
102351 0 2012-09-10 17 D
123052 0 2013-04-03 19 B
提问:
如何在上面的查询语句的基础上把结果变成:
Id isCuiDan ComeDate ArriveTime HotelName
------- ---------- ----------- --------- ---------
305241 1 2013-03-03 18 B
123052 0 2013-04-03 19 B
240566 0 2012-06-18 5 A
129324 0 2012-08-19 9 A
235984 0 2012-07-09 23 C
102351 0 2012-09-10 17 D
就是在上面排序以后的结果更具酒店名称如果出现了第一次那么接下来都是同酒店的,显示完以后再是别的
...全文
相关推荐
学习小组作业——SQL单表简单练习2
这是我们学校的的文档,拿过来给大家分享一下,呵呵,希望大家喜欢
Mysql row number()排序函数的用法和注意
主要介绍了Mysql row number()排序函数的用法和注意 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
SQL试题题库(上百页,1365道题全有答案)
这一文档包含1365道题,每道题均有答案,很方便,对SQL Server的初学者和进阶者均有帮助,上传上来和大家分享一下!一起进步!
SQL21自学通
让你在21天就精通SQL,一本难得的资料,要的快下载。。。
ThinkPHP中order()使用方法详解
本文介绍ThinkPHP的order()方法的用法。order方法可以用于对数据库操作的结果进行排序。即相当于是在select语句中一个order by的子句


疑难问题
