热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用SQLServerWITH子句查询每个类别最新记录

本文介绍如何在SQLServer中利用WITH子句和窗口函数ROW_NUMBER()来查询每个类型下的最新数据行。示例包括表结构、数据插入以及最终的查询语句。
在SQL Server中,有时需要从数据库中查询每个类别下的最新记录。这可以通过使用WITH子句结合窗口函数ROW_NUMBER()实现。

### 表结构及数据示例
假设我们有一个名为COST的表,包含如下字段:
- DTIME (datetime): 记录的时间
- TYPE (varchar): 类别
- MONEY (int): 金额

表中的数据如下所示:

```sql
DTIME TYPE MONEY
2015-10-14 13:50:35.000 shopping 20
2015-10-21 13:51:24.000 shopping 40
2015-10-06 13:52:34.000 eat 10
2015-10-04 13:53:02.000 eat 60
2015-10-06 13:53:26.000 study 70
2015-10-31 13:53:35.000 study 100
```

### 查询每个类别下的最新记录
为了获取每个类别下的最新记录,我们可以使用以下SQL语句:

```sql
WITH LatestRecords AS (
SELECT
DTIME,
TYPE,
MONEY,
ROW_NUMBER() OVER (PARTITION BY TYPE ORDER BY DTIME DESC) AS RowNum
FROM COST
)
SELECT
DTIME,
TYPE,
MONEY
FROM LatestRecords
WHERE RowNum = 1;
```

### 查询结果
执行上述查询后,将返回每个类别下的最新记录:

```sql
DTIME TYPE MONEY
2015-10-06 13:52:34.000 eat 10
2015-10-21 13:51:24.000 shopping 40
2015-10-31 13:53:35.000 study 100
```

通过这种方式,我们可以轻松地从数据库中提取每个类别下的最新记录,这对于数据分析和报告生成非常有用。
推荐阅读
  • 定制数据层关键字:数据层,访问,元数据,数据访问模型http://www.gaodaima.com/35448.html定制数据层_sqlserver ... [详细]
  • SqlServer分区表概述(转载)
    什么是分区表一般情况下,我们建立数据库表时,表数据都存放在一个文件里。但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件 ... [详细]
  • 在RAC环境中如何管理日志(redologfile)组Tuesday,2004-09-1411:52Eygle      htt ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 本文主要介绍关于asp.net,visualstudio,sqlserver的知识点,对【asp.net小说网站案例】和【asp.net电商项目】有兴趣的朋友可以看下由【师哥帮忙】投稿的技术文章,希 ... [详细]
  • 1.3.4ProfilerSQLServerProfiler是一个图形化的管理工具用于监督记录和检查SQLServer数据库的使用情况对系统管理员来说它是一个监视用户活动的间谍1. ... [详细]
  • Java连接SqlServer2008数据库(转)
    Java连接SqlServer2008数据库首先下载JDBC:下载地址:http:www.microsoft.comzh-cndownloaddetails.aspx?id21599下载 ... [详细]
  • SQLServer2008全套 数据库简介,分离,收缩,快照
    第三课视频笔记:联机丛书的使用附加和分离数据库---收缩数据库--------数据库快照 ... [详细]
  • 在目标队列中对消息进行排队时出现异常。错误:15404,状态:19。CouldnotobtaininformationaboutWindowsNTgroupuserSERVER ... [详细]
  • 假设我有一张源表customer_account中有一个字段crm_id_content,字段的内容大概为这种模式<r><uid{F7898717-4954-E123 ... [详细]
  • sqldouble222.22222222如何转换成字符串222.22222222%convertcast都是保留4位小数。 ... [详细]
  • php5.3.x访问sqlserver2005
    由于项目需要,临时用php访问Sqlserver数据库,于是配置mssql扩展,但是无法访问,按照网上各种dll文件copy都不成功,最后终于发现是php版本问题,我的版本是php5.3 ... [详细]
  • 转载:http:www.crazycoder.cnDataBaseIndex.html查询速度慢的原因很多,常见如下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设 ... [详细]
  • 本文主要介绍关于数据库,sql,sqlserver的知识点,对【数据库——概述】和【数据库到底要怎么做】有兴趣的朋友可以看下由【用编程写诗】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的数据库相 ... [详细]
  • Oracle将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现)----创建表Createtablet_user(Idnumber(6),use ... [详细]
author-avatar
路人不会编程
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有