现有两个表A,B ;A为租户开通信息表,B为已开通租户的变更表;两个表中都包含一个date类型的字段;某一租户在A表中是唯一的在B表中可能有多条记录(即变更了多次);现在我要求所有租户以及对应的时间(这个时间是A表和B表中时间字段中修改的最近的一条记录所对应的时间)列表。各位大侠,多谢了.....

解决方案 »

  1.   

    select * from A m,B n 
    where m.id=n.id
    and not n.[date]=(select max([date]) from B where id=n.id)
      

  2.   

    select * from A m,B n 
    where m.id=n.id
    and n.[date]=(select max([date]) from B where id=n.id)
      

  3.   

    select
      a.name,b.time
    from
      a
    cross apply
      (select top 1 * from b where name=a.name order by time desc)b
      

  4.   

    select * from A m,B n 
    where m.id=n.id
    and not exists(select 1 from B where id=n.id and [date]>n.[date])
      

  5.   

    select a.*,isnull(c.date字段,a.date字段) as date字段 
    from a outer apply (
    select top 1 * from b
    where b.租户id = a.租户id
    order by date字段 desc
    ) as c
    2005+
      

  6.   

    select
     a.name,b.time 
    from
     a,b 
    where
     a.name=b.bname
    and
     b.[date]=(select max([date]) from B t where name=a.name)
      

  7.   

    2000
    select m.*,isnull(n.[date],m.[date]) as [date] 
    from A m left join B n 
    on m.id=n.id
    and not exists(select 1 from B where id=n.id and [date]>n.[date])
      

  8.   

    表A:字段有guid(主键,按照时间顺序随机生成),zhid(租户的ID对应于租户信息表中的主键),sj
    表B:字段有guid(主键,按照时间顺序随机生成),zhid(租户的ID对应于租户信息表中的主键),sj
    要求的结果:所有租户的zhid及其对应的sj(这个时间必须是最新修改的时间,两表中最新添加记录对应的时间)。
    注意:一个租户在A表中只有一条记录,在B表中可能有多条或没有记录;记录的条件顺序可通过guid判断。
      

  9.   


    B为已开通租户的变更表
    ---用row_number函数以租户分组修改时间降序就能取得最近修改时间,然后关联下A表就好了
    ;WITH
    DD AS(
    select b.*,row_number()over(partition by 租户id order by 修改时间 desc)nb
    from b --已开通租户的变更表
    )
    --查询
    select A.*,DD.修改时间
    from DD,A
    where nb=1 and dd.租户id=A.租户id
      

  10.   


    B为已开通租户的变更表
    ---用row_number函数以租户分组修改时间降序就能取得最近修改时间,然后关联下A表就好了
    ;WITH
    DD AS(
    select b.*,row_number()over(partition by zhid order by sj desc)nb
    from b --已开通租户的变更表
    )
    --查询
    select A.*,DD.修改时间
    from DD,A
    where nb=1 and dd.zhid=A.zhid
      

  11.   


    select * into #tb
    from(
    select zhid,sj from a
    union all
    select zhid,sj from b
    ) tselect *
    from #tb t
    where not exists (select 1 from #tb where zhid = t.zhid and sj > t.sj)
      

  12.   

    将A和B表记录放一起,查找时间最新的。查找最新记录的方法很多,not exists 是其中一种,楼主可以将A和B表记录union all后的临时表结合3、4、6、7、8等上边的方法都可以的。
      

  13.   


    select m.* , n.* from a m , b n 
    where m.关键字 = n.关键字 and n.date类型的字段 = (select max(date类型的字段) from b where 关键字 = n.关键字)select m.* , n.* from a m , b n 
    where m.关键字 = n.关键字 and not exists (select 1 from b where 关键字 = n.关键字 and date类型的字段 > n.date类型的字段)