SQL一对多取子表最新记录的所有字段(ROW_NUMBER()OVER()函数的应用)
ROW_NUMBER()OVER()
参数1:分组字段 PARTITION BY ..,..,.... 可选
参数2:排序字段 ORDER BY .. DESC 必须
实例:
根据ConfirmDate 排序,PayApplyId 分组
SELECT * FROM PayApplyConfirmRecord
SELECT ROW_NUMBER()OVER(PARTITION BY PayApplyId ORDER BY ConfirmDate DESC) rowId,* from dbo.PayApplyConfirmRecord
结果:

实际应用场景
支付申请表PayApply关联审核表PayApplyConfirmRecord 关系为一对多,查询所有支付申请记录以及最新的审核记录
SELECT b.*,a.* FROM dbo.PayApply a
LEFT JOIN ( select * from (select ROW_NUMBER()over(PARTITION BY PayApplyId order by ConfirmDate desc) rowId,* from dbo.PayApplyConfirmRecord)a where a.rowId=1 ) b ON a.Id=b.PayApplyId
结果:

当然,这个函数也可以用于去重和分页,上面只是一个我开发中遇到的实际需要查询的数据
SQL一对多取子表最新记录的所有字段(ROW_NUMBER()OVER()函数的应用)的更多相关文章
- SQL联合查询:子表任一记录与主表联合查询
今天有网友群里提了这样一个关于SQL联合查询的需求: 一.有热心网友的方案: 二.我的方案: select * from ( select a.*,(select top 1 Id from B as ...
- Linq to Sql 左连接 , 取右表可能为 null的 int类型字段
linq to sql , linq to entity 遇到一个问题, 主表, 从表 一对一 关系, 主表有记录, 从表 可能没有记录. 现在要查询 主表+从表 的某几个字段. 从表字段 有的是 ...
- 记一个常见的ms sql server中取第N条记录的方法
前言 好好学习,天天向上. 正文 好像也是一个不难的问题,刚视频里看到的,就记一下吧. 下面是表中原始的数据结构,做了一个倒叙排序: select * from Employee order by S ...
- CRM 2016 子表单中N:1关系 字段要求与新建时的关系
父表单在新建子表单项时弹出的窗口和 子表单的N:1关系是有关系的.说白了就是子表单窗体上的父表单字段是不是必填项. 关系如下: 1 非必填项 点击子表单的"+"号时,会出现look ...
- Sql:主表与子表的最新记录级联查询
SELECT * FROM MainTable mLEFT JOIN (SELECT d.* FROM (SELECT MAX(clc.Id) AS id FROM ChildTable AS clc ...
- MYSQL中写SQL语句,取到表中按ID降序排列(最新纪录排在第一行)
'select * from bugdata where id>0 order by id desc'
- SQL 分组后取最小行号记录
本示例测试两个表联接查询后,分组并取分组后的最小行号记录 测试表: tb1表结构如下: CREATE TABLE [dbo].[tb1]( ) NOT NULL, ) NULL, ) NULL, CO ...
- sql查询数据库中所有表的记录条数,以及占用磁盘空间大小。
SELECT TableName = obj.name, TotalRows = prt.rows, [SpaceUsed(KB)] = SUM(alloc.used_pages)* FROM sys ...
- sql语句如何查询一个表中某两个字段的相同数据?
Select Name,ID From A group by Name,ID having count (*)>1
随机推荐
- 【POJ3074】Sudoku DLX(Dancing Links)
数独就要DLX,不然不乐意. 数独的DLX构造:9*9个点每一个点有9种选择,这构成了DLX的729行,每行.列.阵有限制,均为9行(/列/阵),然后每行(/列/阵)都有九种数的情况.于是就有了3*9 ...
- LeetCode 237. Delete Node in a Linked List (在链表中删除一个点)
Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...
- css中合理的使用nth-child实现布局
写这篇文章的目的.主要是今天要实现一个布局:li.每行三个,总数不定.仅仅能相邻的li之间须要10px的间距.效果例如以下图: watermark/2/text/aHR0cDovL2Jsb2cuY3N ...
- poj2011
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 17608 Accepted: 765 ...
- 【Ubuntu】无法挂载磁盘
我的电脑分了三个分区,A,B,C,其中A和B是Windows盘,C是ubuntu系统盘 某日发现A ,B盘没法进入了,在文件管理器中点一下,没有反应.于是右击盘符,点击挂载,跳出错误信息: (划重点) ...
- bzoj3550
费用流+线性规划 搞了很长时间... 我们可以设立式子,a[1]+a[2]+a[3]+...+a[n]<=k , ... , a[2 * n + 1]+ ... +a[3*n]<=k a是 ...
- mysql_mssql_access_2017年最新手机号段归属地数据库(17年4月更新)360569记录
mysql,mssql,access 三种格式免费分享给大家,末尾有下载地址 2017年4月最新版手机号段归属地,也叫手机归属地数据库 共360569条记录,三种格式:MYSQL,MSSQL,acc ...
- js中的slice()、substring()、substr()、split()、join()、indexof()
在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧 ...
- [NOI1999] 棋盘分割(推式子+dp)
http://poj.org/problem?id=1191 棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 156 ...
- Tornado异步模式
先介绍下背景:由于工作需要,前段时间又写了一段爬虫去获取和更新一些数据.之前爬虫主要用Scrapy框架批量爬取一些页面数据,或者用Gevent调用目标站点的接口.偶然看到了Tornado,听说这个框架 ...