某个表,有如下字段:
企业编号,年,月,评分要求获得最新年月的所有企业的评分(最新那个)
也就是说,有2013和2012的数据就取2013的,有12月的和11月的就取12月的。
一个企业编号的数据只要一条,就是要最新的这条。
企业编号,年,月,评分要求获得最新年月的所有企业的评分(最新那个)
也就是说,有2013和2012的数据就取2013的,有12月的和11月的就取12月的。
一个企业编号的数据只要一条,就是要最新的这条。
解决方案 »
- 分不多了,请教一个问题,忘各位前辈指导
- 查询问题
- 我写的这个存储过程怎么老是报错
- 为null的字段,在企业管理器中显示null,可在查询分析器中却为空白,如何不一致呀?
- MS SQL Server 2000的Enterprise版和Developer版
- 急求一汇总SQL语句实现!!!!!!!!!
- Excel数据倒入SQL server发生数据丢失,部分单元格数据到数据库编程NULL
- 如何制作 具有剪切等功能的菜单?回复邮箱:[email protected]
- 关于数据库查询并进行统计的问题,请教各位!
- 分布式数据库协同问题
- 数据库问题
- 请教,怎样用SQL2008还原成SQL2005或者SQL2000能识别的数据库备份文件
FROM tb a
WHERE EXISTS ( SELECT 1
FROM ( SELECT MAX(年) 年 ,
MAX(月) 月 ,
企业编号
FROM tb
GROUP BY 企业编号
) b
WHERE a.月 = b.月
AND a.年 = b.年
AND a.企业编号 = b.企业编号 )
还有,您这个表就些列了吗,没有个ID什么的列么?
还有,您的MSSQL是什么版本的?
还有,您建的确这个查询语句是放在哪儿执行的?查询分析器?MSSQL Management Studio?
select * from tb a
where not exists(select 1 from tb where 企业编号=a.企业编号 and convert(datetime,ltrim(年)+'-'+ltrim(月)+'-01')>convert(datetime,ltrim(a.年)+'-'+ltrim(a.月)+'-01'))
create table 企业表(企业编号 int,年 int,月 int,评分 int)
insert into 企业表
select 1,2011,3,81 union all
select 1,2012,6,82 union all
select 1,2013,8,83 union all
select 1,2012,12,84 union all
select 1,2011,4,86 union all
select 1,2015,7,87 union all
select 1,2014,6,88 union all
select 1,2013,2,89 union all
select 1,2015,3,90 union all
select 1,2012,9,91 union all
select 1,2011,12,92 union all
select 2,2014,6,88 union all
select 2,2013,2,89 union all
select 2,2015,3,90
go
select * from(
select *,row_number()over(partition by 企业编号 order by 年 desc,月 desc) as rn from 企业表
)t
where rn=1
/*
企业编号 年 月 评分 rn
----------- ----------- ----------- ----------- --------------------
1 2015 7 87 1
2 2015 3 90 1(2 行受影响)*/
go
drop table 企业表