有两张表的内容如下:
A表如下:                       B表如下:
Name   age   Date               BookName    Date
Abc    12    1973-01-01         Delphi  1973-01-01
cde    18    1973-02-03         C++     2002-01-01
ddd    20    1974-02-03要求按时间分组,每一个时间一条记录,最后得到如下形式的数据形式:
Date         Name     age   BookName 
1973-01-01   Abc      12    Delphi
1973-02-03   cde      18    null
1974-02-03   ddd      20    null
2002-01-01   null     null  C++可以吗?

解决方案 »

  1.   

    select [Date]=convert(varchar(10), A.date, 120), A.Name, A.age, [BookName]=Max(B.BookName)
    from A left join B on convert(varchar(10), A.date, 120)=convert(varchar(10), B.date, 120)
    group by convert(varchar(10), A.date, 120), A.Name, A.age--(没有不可以,只有喝多了酒!)
      

  2.   

    楼上的方法我试过了,结果不对,呵呵,我来改进一下(以下方法已经建表按楼主的要求测试通过):
    select a.Date, a.Name, a.age, b.BookName
    from a
    left join b
    on b.Date = a.Date
    union  
    select c.date, null, null, c.bookname
    from b c
    where c.date not in (select [date] from a)
      

  3.   

    支持,hthunter(核桃)(放假咯,无聊ing)
    试了,成功~
      

  4.   

    马可提供了效率更高的方法:
    http://expert.csdn.net/Expert/topic/2674/2674640.xml?temp=.2479975