热门标签 | 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
```

通过这种方式,我们可以轻松地从数据库中提取每个类别下的最新记录,这对于数据分析和报告生成非常有用。
推荐阅读
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社区 版权所有