sql分组最后一条
发布时间: 2025-02-04 03:38:24
‘壹’ sql分组后取最大日期的记录
用分析函数row_number来给分组内的记录编号,然后取编号值为1的记录即可。
select s.*
from (
select v.*, row_number() over (partition by b order by c desc) as order_num
from #b v
) s
where s.order_num = 1
‘贰’ sql分组后取最大日期的记录
select a.f_SPBM,a.f_kcsl
from tempTest a,
(
select f_SPBM,max(f_rq) f_rq
from tempTest
group by f_SPBM
) b
where a. f_SPBM = b. f_SPBM
and a.f_rq = b.f_rq
‘叁’ SQL 分组记录得到最后一个记录值
问数据库问题记得要说是什么类型数据库
DB2/ORACLE
SELECT t.*
FROM (SELECT a.*, ROW_NUMBER() OVER(PARTITION BY 分组字段 ORDER BY 排序字段 DESC) RK
FROM tab) t
WHERE t.rk = 1
SQL通用方法:
SELECT t.*
FROM tab t
WHERE NOT EXISTS (SELECT 1 FROM tab
WHERE xxx = t.xxx AND xxx = t.xxxx(分组那些字段)
t.排序字段 > 排序字段)
‘肆’ sql先分组后排序的问题
selectregtime,ccountfrom(selectregtime,ccount,row_number()over(partitionbycasewhenccount=0then0else1endorderbyregtime)rn,casewhenccount=0then0else1endrkfrom表)torderbyrkdesc,rn
或者:
selectregtime,ccount,row_number()over(partitionbycasewhenccount=0then0else1endorderbyregtime)fromtmp
orderbycasewhenccount=0then0else1enddesc
热点内容