首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

集锦排序

2013-08-09 
汇总排序create table test1 (id int,fid varchar(10),fdate datetime, fremark varchar(100))insert into

汇总排序


create table test1 (id int,fid varchar(10),fdate datetime, fremark varchar(100))

insert into test1 values(1,'A1','2013-08-01','')
insert into test1 values(2,'A1','2013-08-02','')
insert into test1 values(3,'A1','2013-08-03','')
insert into test1 values(4,'A1','2013-08-02','')

insert into test1 values(5,'B1','2013-08-01','')
insert into test1 values(6,'B1','2013-08-02','')
insert into test1 values(7,'B1','2013-08-03','')
insert into test1 values(8,'B1','2013-08-02','')


需要的结果是

7B12013-08-03 00:00:00.000
3A12013-08-03 00:00:00.000

[解决办法]
select * from test1 t 
where fdate=(select max(fdate) from test where t.fid=fid)

[解决办法]
引用:
对日期降序排序取最大的,然后再对ID排序取最大的。


这样看起来比较直观

;WITH maco AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY fid ORDER BY fdate DESC,id desc) AS rid,* FROM test1
)

SELECT id,fid,fdate FROM maco WHERE rid=1
/*
id          fid        fdate
----------- ---------- -----------------------
3           A1         2013-08-03 00:00:00.000
7           B1         2013-08-03 00:00:00.000
*/

[解决办法]
 SELECT *
 FROM test1 AS A
 WHERE fdate=(
 SELECT TOP 1 MAX(fdate) 
 FROM test1 AS B
 WHERE A.fid=B.fid
 GROUP BY B.fid


 )


[解决办法]
create table test1 (id int,fid varchar(10),fdate datetime, fremark varchar(100))
 
insert into test1 values(1,'A1','2013-08-01','')
insert into test1 values(2,'A1','2013-08-02','')
insert into test1 values(3,'A1','2013-08-03','')
insert into test1 values(4,'A1','2013-08-02','')
 
insert into test1 values(5,'B1','2013-08-01','')
insert into test1 values(6,'B1','2013-08-02','')
insert into test1 values(7,'B1','2013-08-03','')
insert into test1 values(8,'B1','2013-08-02','')

select * from test1 t 
where NOT EXISTS
(
SELECT 1 
FROM test1 m
WHERE m.fid = t.fid AND 
(
(m.fdate > t.fdate) OR 
(m.fdate=t.fdate AND m.id > t.id)
)
)
/*
idfidfdatefremark
3A12013-08-03 00:00:00.000
7B12013-08-03 00:00:00.000
*/

热点排行