SQL 分组后获取其中一个字段最大值的整条记录
2015-12-26 21:00
567 查看
--有id,name,createDate的一张表testTable
--根据name分组,获取每组中createDate最大的那条记录(整条)查询出来
----------------------------------------------
创建一张表,语句如下:
[sql] view plaincopy
1. CREATE TABLE [dbo].[testTable]
2. (
3. [id] [int] NOT NULL IDENTITY(1, 1),
4. [name] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,
5. [counts] [int] NULL,
6. [createDate] [datetime] NULL
7. )
8. GO
9. -- Constraints and Indexes
10. ALTER TABLE [dbo].[testTable] ADD CONSTRAINT [PK_testTable] PRIMARY KEY CLUSTERED ([id])
11. GO
插入测试数据:
1. insert into testTable(id,name,counts,createDate) values(1,'A ',20,'01 14 2011 10:52PM')
2. insert into testTable(id,name,counts,createDate) values(2,'A ',10,'02 14 2011 10:52PM')
3. insert into testTable(id,name,counts,createDate) values(3,'B ',20,'03 14 2011 10:52PM')
4. insert into testTable(id,name,counts,createDate) values(4,'B ',40,'04 14 2011 10:52PM')
5. insert into testTable(id,name,counts,createDate) values(5,'B ',10,'05 14 2011 10:52PM')
6. insert into testTable(id,name,counts,createDate) values(6,'C ',20,'06 14 2011 10:52PM')
7. insert into testTable(id,name,counts,createDate) values(7,'C ',40,'07 14 2011 10:52PM')
查询SQL语句:
1. select * from (
2. select id,name,counts,createDate,row_number() over(partition by name order by createDate desc) rn
3. from testTable
4. ) t where t.rn <=1
结果如下:
--根据name分组,获取每组中createDate最大的那条记录(整条)查询出来
----------------------------------------------
创建一张表,语句如下:
[sql] view plaincopy
1. CREATE TABLE [dbo].[testTable]
2. (
3. [id] [int] NOT NULL IDENTITY(1, 1),
4. [name] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,
5. [counts] [int] NULL,
6. [createDate] [datetime] NULL
7. )
8. GO
9. -- Constraints and Indexes
10. ALTER TABLE [dbo].[testTable] ADD CONSTRAINT [PK_testTable] PRIMARY KEY CLUSTERED ([id])
11. GO
插入测试数据:
1. insert into testTable(id,name,counts,createDate) values(1,'A ',20,'01 14 2011 10:52PM')
2. insert into testTable(id,name,counts,createDate) values(2,'A ',10,'02 14 2011 10:52PM')
3. insert into testTable(id,name,counts,createDate) values(3,'B ',20,'03 14 2011 10:52PM')
4. insert into testTable(id,name,counts,createDate) values(4,'B ',40,'04 14 2011 10:52PM')
5. insert into testTable(id,name,counts,createDate) values(5,'B ',10,'05 14 2011 10:52PM')
6. insert into testTable(id,name,counts,createDate) values(6,'C ',20,'06 14 2011 10:52PM')
7. insert into testTable(id,name,counts,createDate) values(7,'C ',40,'07 14 2011 10:52PM')
查询SQL语句:
1. select * from (
2. select id,name,counts,createDate,row_number() over(partition by name order by createDate desc) rn
3. from testTable
4. ) t where t.rn <=1
结果如下:
相关文章推荐
- Redis 存储字符串和对象
- java对redis的基本操作
- postgresql数据库的摸索
- 新手第一次联系oracle的碰到的触发器不能创建的问题
- SQLdiag-初识
- MYSQL数据丢失讨论
- mysqlbinlog解析的几篇经典文章
- 开发检测MySQL主从同步插件
- PostgreSQL
- GreenDao 数据库简单使用及数据库升级更新
- SparkSQL简介
- 五种SQL Server分页存储过程的方法及性能比较
- XenDesktop5.6连接外部SQL Server数据库步骤
- XenDesktop 连接数据库报错
- MySQL 5.7及以上解压缩版本配置安装
- MySQL 全角转换为半角
- ubuntu server平台下安装与配置MYSQL的ODBC驱动
- ubuntu下mysql服务器更改数据库文件路径
- Sql2008 r2 使用ftp 公布和订阅方式同步数据
- sql server中的 SET NOCOUNT ON 的含义