当前位置: 代码迷 >> Sql Server >> SQL 语句,该如何解决
  详细解决方案

SQL 语句,该如何解决

热度:57   发布时间:2016-04-24 10:49:02.0
SQL 语句
表a:
bNo              OperateName                      OperateTime                 State
1                    原始数据                 2014-03-01                       1
1                    增加                     2014-03-02                       2
1                    修改                     2014-03-02                       3
2                    原始数据                 2014-03-05                       1
2                     删除                     2014-03-09                      4

表b:
bNo              iNo                 OutCount
1                100甲                          2

得到结果:
bNo                 iNo                            OutCOunt                State    
1                     100甲              2                             1
也就是,根据所输入的iNo ,从表a中获取OperateTime 最早的一条记录,和表b关联起来。


 
------解决方案--------------------
SELECT b.*,c.State FROM b LEFT JOIN a AS c ON b.bNo=c.bNo AND NOT EXISTS(SELECT 1 FROM a WHERE a.bNo=c.bNo AND OperateTime<c.OperateTime)

------解决方案--------------------
select top 1 b.*,a.State FROM b
inner join a on a.bNo = b.bNo
order by a.OperateTime
------解决方案--------------------

select b.bNo,b.iNo,b.OutCount,a.[State]
 from 表b b
 left join (select row_number() over(partition by bNo order by OperateTime) 'rn',*  
            from 表a) a on b.bNo=a.bNo and a.rn=1
  相关解决方案