感谢 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. 【转载整理】mysql权限分配详解

    原文:https://www.cnblogs.com/Csir/p/7889953.html MySQL权限级别 1)全局性的管理权限,作用于整个MySQL实例级别 2)数据库级别的权限,作用于某个指 ...

  2. 通用返回XML格式结果

    public class ResultModel { public string OrderCode { get; set; } public string Message { get; set; } ...

  3. 《转》vue更新到2.0之后vue-resource不在更新,axios的使用

    vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,前一段时间用了一下,现在说一下它的基本用法. 首先就是引入axios,如果你使用es6,只需要安装axios ...

  4. golang:吐槽multipart的设计

    最近在做邮件解析的工作,因此接触到multipart库,用了之后才发现golang的multipart有一点设计很诡异. 红线标出来的话意思是:当Content-Transfer-Encoding的值 ...

  5. wamp多站点多端口配置

    1.配置httpd.conf 监听多个端口 #Listen 12.34.56.78:80 Listen 8081 Listen 8082 Listen 8083 可以通过netstat -n -a查看 ...

  6. 命名实体识别,使用pyltp提取文本中的地址

    首先安装pyltp pytlp项目首页 单例类(第一次调用时加载模型) class Singleton(object): def __new__(cls, *args, **kwargs): if n ...

  7. SaaS产品成功学

    『精益』和『敏捷』之类的方法论在产品实现方面消除了不少浪费,但面对SaaS产品,这些却并没有像银弹般有效. 国外的『Ramen』团队模仿Maslow的需求层次理论提出了SaaS产品的需求层次理论,可以 ...

  8. android——判断当前网络是否可用

    http://www.cnblogs.com/codeworker/archive/2012/04/23/2467180.html //判断当前是否有网络连接 private boolean isCo ...

  9. Path expected for join!错误处理

    在Hibernate中,进行连接查询时,如果使用join语句,就容易产生标题所示的错误. 比如from Content o left join Mcp mcp where o.mcp.id=mcp.i ...

  10. hosts 不启作用的解决办法

    查各种编码ANSI flushdns无用 停止DNS Client  服务  0.0