sql分组后排序的问题?

时间:2021-12-03 02:43:57

bookid  pingpai    temp01xx
   1      k21      2011-1-1
   2      d22      2011-2-1
   3      k20      2011-2-22
   4      d12      2011-3-1
   5      k33      2011-4-1

我想得到这样的结果 sql语句该如何写?
  bookid   pingpai    temp01xx
             d22     2011-2-1
             d12     2011-3-1
             k21     2011-1-1
             k20     2011-2-22
             k33     2011-4-1
先按照pingpai分组后,再按temp01xx时间排序

6 个解决方案

#1



select *
from tb
order by pingpai,temp01xx

#2



declare @table table (bookid int,pingpai varchar(3),temp01xx datetime)
insert into @table
select 1,'k21','2011-1-1' union all
select 2,'d22','2011-2-1' union all
select 3,'k20','2011-2-22' union all
select 4,'d12','2011-3-1' union all
select 5,'k33','2011-4-1'

SELECT  bookid ,
        pingpai ,
        CONVERT(VARCHAR(10), temp01xx, 120) AS temp01xx
FROM    @table
ORDER BY pingpai ,
        temp01xx
/*
bookid      pingpai temp01xx
----------- ------- ----------
4           d12     2011-03-01
2           d22     2011-02-01
3           k20     2011-02-22
1           k21     2011-01-01
5           k33     2011-04-01
*/

#3


分组了,但未按时间排序

#4


sorry,数据库 是access2003

#5


bookid  pingpai    temp01xx
   1      k21      2011-1-1
   2      d22      2011-2-1
   3      k20      2011-2-22
   4      d12      2011-3-1
   5      k33      2011-4-1


肯定会按时间排序的,这样的数据看不出什么,你可以在加一条

bookid  pingpai    temp01xx
   1      k21      2011-1-1
   2      d22      2011-2-1
   3      k20      2011-2-22
   4      d12      2011-3-1
   5      k33      2011-4-1
   6      d21      2011-2-1

试试!

#6


引用 4 楼 quweiie 的回复:
sorry,数据库 是access2003

access2003也应该没有问题呀...

#1



select *
from tb
order by pingpai,temp01xx

#2



declare @table table (bookid int,pingpai varchar(3),temp01xx datetime)
insert into @table
select 1,'k21','2011-1-1' union all
select 2,'d22','2011-2-1' union all
select 3,'k20','2011-2-22' union all
select 4,'d12','2011-3-1' union all
select 5,'k33','2011-4-1'

SELECT  bookid ,
        pingpai ,
        CONVERT(VARCHAR(10), temp01xx, 120) AS temp01xx
FROM    @table
ORDER BY pingpai ,
        temp01xx
/*
bookid      pingpai temp01xx
----------- ------- ----------
4           d12     2011-03-01
2           d22     2011-02-01
3           k20     2011-02-22
1           k21     2011-01-01
5           k33     2011-04-01
*/

#3


分组了,但未按时间排序

#4


sorry,数据库 是access2003

#5


bookid  pingpai    temp01xx
   1      k21      2011-1-1
   2      d22      2011-2-1
   3      k20      2011-2-22
   4      d12      2011-3-1
   5      k33      2011-4-1


肯定会按时间排序的,这样的数据看不出什么,你可以在加一条

bookid  pingpai    temp01xx
   1      k21      2011-1-1
   2      d22      2011-2-1
   3      k20      2011-2-22
   4      d12      2011-3-1
   5      k33      2011-4-1
   6      d21      2011-2-1

试试!

#6


引用 4 楼 quweiie 的回复:
sorry,数据库 是access2003

access2003也应该没有问题呀...