有两个表 A 和B 
A表id      name
-------------
1       a
2       a
3       a
4       b
5       b
6       b
B表id      date
-------------
1       2006-05-09
2       2006-09-23
3       2006-10-03
4       2006-09-11
5       2006-05-06
6       2006-12-09最后要的结果是关连两个表 取得名称相同中时间最接近现在的一条记录想要的结果   C 表:id      name      date
-------------------------
1        a       2006-10-03
2        b       2006-12-09这该怎么写啊?想的头都 大了
麻烦各位了!!!

解决方案 »

  1.   

    --第二行的ID是2还是4?
      
    create table #A (id int,name varchar(100))
    insert into #A select 1,'a'
    insert into #A select 2,'a'
    insert into #A select 3,'a'
    insert into #A select 4,'b'
    insert into #A select 5,'b'
    insert into #A select 6,'b'
    create table #B(id int,[date] datetime)
    insert into #B select 1,'2006-05-09'
    insert into #B select 2,'2006-09-23'
    insert into #B select 3,'2006-10-03'
    insert into #B select 4,'2006-09-11'
    insert into #B select 5,'2006-05-06'
    insert into #B select 6,'2006-12-09'
    select min(t1.id),t1.name,max(t2.[date])
    from #A t1 inner join #B t2 on t1.id=t2.id
    group by t1.namedrop table #A,#B
      

  2.   

    select identity(int,1,1) as id,tb1.name,max(tb2.[date]) as date into temptb from tb1 inner join tb2 on tb1.id = tb2.id group by tb1.name
    select   *   from   temptb
    其中temptb是一个临时表
    这样就可以实现LZ的功能
      

  3.   

    是4 没错, 我写错了但如果用分组,在实际工作中还有其它很多的字段,而且必须写到group by 里,这样的话查出来的结果可能还是没被分组啊,我现在这个就是。
    这是怎么回事?
      

  4.   

    用上述语句作为一个子查询,再与原来的表关联即可。如:select T.*,#B.其它字段名
    from 
    (select min(t1.id),t1.name,max(t2.[date])
    from #A t1 inner join #B t2 on t1.id=t2.id
    group by t1.name) T inner join #B on T.id=#B.id
      

  5.   

    --第二行的ID是2还是4?
      
    create table #A (id int,name varchar(100))
    insert into #A select 1,'a'
    insert into #A select 2,'a'
    insert into #A select 3,'a'
    insert into #A select 4,'b'
    insert into #A select 5,'b'
    insert into #A select 6,'b'
    create table #B(id int,[date] datetime,其他字段名 int)
    insert into #B select 1,'2006-05-09',1
    insert into #B select 2,'2006-09-23',3
    insert into #B select 3,'2006-10-03',4
    insert into #B select 4,'2006-09-11',5
    insert into #B select 5,'2006-05-06',8
    insert into #B select 6,'2006-12-09',9
    select min(t1.id) as id,t1.name,max(t2.[date]) as [date]
    from #A t1 inner join #B t2 on t1.id=t2.id
    group by t1.name--显示其他字段
    select T.*,#B.其他字段名
    from 
    (select min(t1.id) as id,t1.name,max(t2.[date]) as [date]
    from #A t1 inner join #B t2 on t1.id=t2.id
    group by t1.name) T inner join #B on T.id=#B.id
    drop table #A,#B
      
      

  6.   

     
    create table #A (id int,name varchar(100))
    insert into #A select 1,'a'
    insert into #A select 2,'a'
    insert into #A select 3,'a'
    insert into #A select 4,'b'
    insert into #A select 5,'b'
    insert into #A select 6,'b'
    create table #B(id int,[date] datetime,其他字段名 int)
    insert into #B select 1,'2006-05-09',1
    insert into #B select 2,'2006-09-23',3
    insert into #B select 3,'2006-10-03',4
    insert into #B select 4,'2006-09-11',5
    insert into #B select 5,'2006-05-06',8
    insert into #B select 6,'2006-12-09',9
    select min(t1.id) as id,t1.name,max(t2.[date]) as [date]
    from #A t1 inner join #B t2 on t1.id=t2.id
    group by t1.name--显示其他字段
    select T.*,#B.其他字段名
    from 
    (select min(t1.id) as id,t1.name,max(t2.[date]) as [date]
    from #A t1 inner join #B t2 on t1.id=t2.id
    group by t1.name) T inner join #B on T.id=#B.id
    drop table #A,#B