感谢 http://bbs.csdn.net/topics/391048578?page=1

create table A
(
[Id] [uniqueidentifier] NOT NULL,
[EventNo] [nvarchar](50) NULL,
[EventName] [nvarchar](200) NULL
) create table B
(
[Id] [uniqueidentifier] NOT NULL,
[AId] [uniqueidentifier] NULL,
[status] int,
[EventDetail] nvarchar(500) null
) Declare @Id [uniqueidentifier]
select @Id = NEWID()
insert into A select @Id,'','test1'
insert into B select NEWID(),@Id,0,'detail10'
insert into B select NEWID(),@Id,0,'detail11'
insert into B select NEWID(),@Id,3,'detail12' select @Id = NEWID()
insert into A select @Id,'','test2'
insert into B select NEWID(),@Id,0,'detail20'
insert into B select NEWID(),@Id,3,'detail21' select @Id = NEWID()
insert into A select @Id,'','test3' select @Id = NEWID()
insert into A select @Id,'','test4'
insert into B select NEWID(),@Id,0,'detail40'
insert into B select NEWID(),@Id,1,'detail41'
insert into B select NEWID(),@Id,3,'detail42' --
select A.EventNo,A.EventName,B.EventDetail From A left join B on a.Id = b.AId
EventNo EventName EventDetail
1 test1 detail10
1 test1 detail11
1 test1 detail12
2 test2 detail20
2 test2 detail21
3 test3 NULL
4 test4 detail40
4 test4 detail41
4 test4 detail42 --想要实际的效果为
EventNo EventName EventDetail
1 test1    detail10 2 test2    detail20
3 test3    NULL
4 test4    detail40

解决办法:

--方法1
SELECT A.EventNo,A.EventName,T2.EventDetail
FROM A
OUTER APPLY(SELECT TOP 1 EventDetail FROM B WHERE A.ID=B.AID ORDER BY status)T2 --方法2
SELECT EventNo,EventName,EventDetail
FROM(
SELECT A.EventNo,A.EventName,B.EventDetail
,ROW_NUMBER()OVER(PARTITION BY A.ID ORDER BY B.status)RN
FROM A
LEFT JOIN B ON A.ID=B.AID
--WHERE 其他条件 加在这最好
)T
WHERE RN=1
ORDER BY EventNo

方法一已经验证,可以使用。

对应自己数据库:

现在只有一个用户视图,需要select 单位并排序,因为一个单位有多个用户

select oaa.unitid,oaa.unitname,t2.DepartmentSortIndex from (
select * from ( select distinct(o.UnitId),o.UnitName from [McsDW].[dbo].[UserViewAll_DW] o) oa) oaa
outer apply (SELECT TOP 1 DepartmentSortIndex FROM [McsDW].[dbo].[UserViewAll_DW] B WHERE oaa.UnitId=B.UnitId ORDER BY DepartmentSortIndex) t2
order by DepartmentSortIndex

sql 一对多查询最近一条的更多相关文章

  1. sql 一对多查询

    1. 一对多查询 查询departmentinfo字典下所有部门的人员数量 select * from departmentinfo a left join (select count(*) User ...

  2. 复杂的sql 一对多查询

    SELECT distinct       u.Name as UserName,       a.OrderId,       (       select  d.SignCity from T_O ...

  3. sql数据库中查询第几条到第几条的数据

    通用方法: select top 500 * from (select top 1000 * from UserSearchDatas order by ID) a order by ID desc ...

  4. 多条SQL语句对查询结果集的垂直合并,以及表设计时如何冗余字段

    需求引入 你有一个销售单表A 和一个销售单详情表B 和一个收付款记录表C A---->B 一对多   A---->C一对多 如果一个销售单有两个详情,三条收款记录 对一个销售单 我们想查询 ...

  5. 不同数据库,查询前n条数据的SQL语句

    不同的数据库,支持的SQL语法略有不同,以下是不同数据库查询前n条数据的SQl语句 SQL Server(MSSQL) SELECT TOP n * FROM table_name ORACLE SE ...

  6. SQL查询第m条到第n条的方法

    SQL查询第m条到第n条的方法 如表名为GOOD Sselect top (n-m) * from GOODS where (某一列名) not in (select top m (某一列名) fro ...

  7. 各数据库查询前N条记录的SQL语句

    sql在不同数据库查询前几条数据 1. ORACLE SELECT * FROM TABLE_NAME WHERE ROWNUM <= N;  HQL: from table_name t or ...

  8. 题目:写出一条SQL语句,查询工资高于10000,且与他所在部门的经理年龄相同的职工姓名。

    create table Emp( eid char(20) primary key, ename char(20), age integer check (age > 0), did char ...

  9. 21Mybatis_订单商品数据模型_一对多查询——resultMap方式

    这篇文章延续订单商品数据模型,这张讲述的是一对多的查询.(用resultMap) 给出几张表的内容: User表:

随机推荐

  1. 这可能由 CredSSP 加密 oracle 修正引起的。

    某天在与服务器进行远程连接时,遇到了以下错误: 发生了身份验证错误. 不支持请求的函数. 远程计算机: <主机名> 这可能由 CredSSP 加密 oracle 修正引起的. 有关更多信息 ...

  2. 译:1. RabbitMQ Java Client 之 "Hello World"

    这些教程介绍了使用RabbitMQ创建消息传递应用程序的基础知识.您需要安装RabbitMQ服务器才能完成教程 1. 打造第一个Hello World 程序 RabbitMQ是一个消息代理:它接受和转 ...

  3. pandas通过皮尔逊积矩线性相关系数(Pearson's r)计算数据相关性

    皮尔逊积矩线性相关系数(Pearson's r)用于计算两组数组之间是否有线性关联,举个例子: a = pd.Series([1,2,3,4,5,6,7,8,9,10]) b = pd.Series( ...

  4. rman list命令

    rman list命令   List command example 可以用于查看backup,copy,archivelog等 01 list incarnation================ ...

  5. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-7底层驱动之滴嗒定时器

    视频简介:该视频介绍iCore3应用开发平台中的配置方法,以及在应用开发平台中的应用. 源视频包下载地址:链接:http://pan.baidu.com/s/1o7UuUwi 密码:14cx 银杏科技 ...

  6. 【原】关于AdaBoost的一些再思考

    一.Decision Stumps: Decision Stumps称为单层分类器,主要用作Ensemble Method的组件(弱分类器).一般只进行一次判定,可以包含两个或者多个叶结点.对于离散数 ...

  7. OpenGL教程一

    引自:https://blog.csdn.net/u013654125/article/details/73613644 GLEW, GLFW和GLM介绍 现在你有了工程,就让我们开始介绍下工程所用到 ...

  8. Vue:Vue2.0搭建脚手架

    随着Vue.js越来越火爆,更多的项目都用到Vue进行开发,在实际的开发项目中如何搭建脚手架呢?今天就来跟大家分享一下如何使用vue-cli搭建脚手架. 一.安装node.js 1.进入官网https ...

  9. 【转】HTML embed标签使用方法和属性详解

    一.基本语法 代码如下: embed src=url 说明:embed可以用来插入各种多媒体,格式可以是 Midi.Wav.AIFF.AU.MP3等等,Netscape及新版的IE 都支持.url为音 ...

  10. IDEA VS 常用高效 黄金 快捷键

    [参考] VS 常用高效 快捷键 身为一个编程人员,掌握IDE的快键是提高开发效率最简单直接的方法,也是必备技能.和网上的大篇罗列不同,下面只讲精髓,根据实践不断调整.本人C#转Java,曾经试过Ec ...