分别有表A(营运中车辆信息表)和表B(报废车辆信息表)
两表都有相同字段并在字段CarID中一一对应如
表A
ID    CarID   CarNo
 1     001    AAAAAA
 2     002    BBBBBB
 3     003    CCCCCC
 
表B
ID   CarID   CarNo   DateTime
 1    001    AFAFAD   2007-4-1
 2    001    FAFAFF   2007-4-2
 3    002    FAFDAS   2007-4-1
 4    002    ADSFSAD  2007-4-5现在我需要进行关联查询,表B与表A是多对一的关系,但以DateTime的最后时间为标准如表C
CarID  a.CarNo  b.CarNo
 001   AAAAAA   FAFAFF
 002   BBBBBB   ADSFSAD请问各位大大怎样写语句啊?谢谢!

解决方案 »

  1.   

    declare @a table(ID int, CarID varchar(10), CarNo varchar(10))
    insert @a select 1 ,'001', 'AAAAAA'
    union all select 2, '002', 'BBBBBB'
    union all select 3, '003', 'CCCCCC'declare @B table(ID int, CarID varchar(10), CarNo varchar(10), [DateTime] datetime)
    insert @b select 1, '001','AFAFAD','2007-4-1'
    union all select 2 ,'001', 'FAFAFF', '2007-4-2'
    union all select 3 ,'002', 'FAFDAS', '2007-4-1'
    union all select 4 ,'002', 'ADSFSAD', '2007-4-5'select a.carid,a.carno,b.carno from @a a,@b b where a.carid=b.carid and not exists(select 1 from @b where carid=a.carid and [datetime]>b.[datetime])
      

  2.   

    补充一下问题:
    还是表A和表B

    数据如下:
    表A
    ID    CarID   CarNo
     1     001    AAAAAA
     2     002    BBBBBB
     3     003    CCCCCC
    表B
    ID   CarID   CarNo   DateTime
     1    001    AFAFAD   2007-4-1
     2    001    FAFAFF   2007-4-2
     3    002    FAFDAS   2007-4-1
     4    002    ADSFSAD  2007-4-5
     5    003    DAFDSFA  2007-4-1
     7    004    FDSAADSF 2007-4-2如上表B中有表A中没有的004现在要反过来
    如表C1
    CarID  b.CarNo  a.CarNo
     001   AAAAAA   FAFAFF
     002   BBBBBB   ADSFSAD
     003   DAFDSFA  CCCCCC
     004   FDSAADSF       同样表B也是只取DateTime中最新时间的为第一!请问应该怎样实现啊?谢谢!
      

  3.   

    declare @a table(ID int, CarID varchar(10), CarNo varchar(10))
    insert @a select 1 ,'001', 'AAAAAA'
    union all select 2, '002', 'BBBBBB'
    union all select 3, '003', 'CCCCCC'declare @B table(ID int, CarID varchar(10), CarNo varchar(10), [DateTime] datetime)
    insert @b select 1, '001','AFAFAD','2007-4-1'
    union all select 2 ,'001', 'FAFAFF', '2007-4-2'
    union all select 3 ,'002', 'FAFDAS', '2007-4-1'
    union all select 4 ,'002', 'ADSFSAD', '2007-4-5'
    union all select 5 ,'003', 'DAFDSFA', '2007-4-1'
    union all select 7 ,'004', 'FDSAADSF', '2007-4-2'
    select a.carid,b.carno,a.carno from 
    (select id,carid,carno,[datetime] from @b b where not exists(select 1 from @b where carid=b.carid and [datetime]>b.[datetime])) a left join
    @a b On a.carid=b.carid
      

  4.   

    谢谢楼上的大大,还要继续请教你问题哦!结构如下:
    分别有表A(营运中车辆信息表)和表B(报废车辆信息表)表C (司机资料)
    两表A和B都有相同字段并在字段CarID中一一对应如
    表A
    ID    CarID   CarNo
     1     001    AAAAAA
     2     002    BBBBBB
     3     003    CCCCCC
     
    表B
    ID   CarID   CarNo   DateTime
     1    001    AFAFAD   2007-4-1
     2    001    FAFAFF   2007-4-2
     3    002    FAFDAS   2007-4-1
     4    002    ADSFSAD  2007-4-5
    表C
    ID CarID  DriverName
    1  001    小明
    2  001    小红
    3  002    小黄
    4  002    小辉
    现在我需要进行关联查询,表B与表A是多对一的关系,但以DateTime的最后时间为标准
    同时表C是表A中车辆的司机,关系是一车多个司机现在
    如表D
    CarID  a.CarNo  b.CarNo  c.DriverName
     001   AAAAAA   FAFAFF     小明
     001   AAAAAA   FAFAFF     小红
     002   BBBBBB   ADSFSAD    小黄
     002   BBBBBB   ADSFSAD    小辉 请问各位大大怎样写语句啊?谢谢!