数据结构如下:
类型     日期        余额          金额
01   2007-01-09    1584.5   3169.0
02   2007-01-09     762.5   2516.2
01   2007-01-24     3003.0   6006.2
02   2007-01-24     3519.1   7038.4
01   2007-01-25     5213.0   10426.0
02   2007-01-25     2161.4         4322.8要如下的内容,希望日期、类型统计得到信息如下:
   日期         类型1   余额1     金额2    类型2   余额2    金额2   
2007-01-09       01     1584.5    3169.0     02    762.5    2516.2
2007-01-24       01     3003.0    6006.2     02    3519.1   7038.4
2007-01-25       01     5213.0    10426.0    02    2161.4   4322.8得到欲上述效果,有好的实现的意见或办法也欢迎大家指教,谢谢了

解决方案 »

  1.   

    同一天保证只有两个类型吗?select isnull(a.日期,b.日期) as 日期,a.类型 as 类型1,a.余额 as 余额1,a.金额 as 金额1
    b.类型 as 类型2,b.余额 as 余额2,b.金额 as 金额2
    from tablename a 
    full join tablename b
    on a.日期=b.日期
    and a.类型='01'
    and b.类型='02'
      

  2.   

    create table T(类型 varchar(10), 日期 datetime, 余额 decimal(10,1), 金额 decimal(10, 1))
    insert T select   '01',   '2007-01-09',    1584.5,   3169.0
    union all select '02',   '2007-01-09',     762.5,   2516.2
    union all select '01',   '2007-01-24',     3003.0,   6006.2
    union all select '02',   '2007-01-24',     3519.1,   7038.4
    union all select '01',   '2007-01-25',     5213.0,   10426.0
    union all select '02',   '2007-01-25',     2161.4,   4322.8declare @sql varchar(8000)
    set @sql='select 日期=convert(char(10), 日期, 120),'
    select @sql=@sql+quotename('类型'+类型)+'='+quotename(类型, '''')+
    ',余额'+类型+'=max(case when 类型='+quotename(类型, '''')+' then 余额 else 0 end)'+
    ',金额'+类型+'=max(case when 类型='+quotename(类型, '''')+' then 金额 else 0 end),'
    from T
    group by 类型
    select @sql=left(@sql, len(@sql)-1),
      @sql=@sql+' from T group by convert(char(10), 日期, 120)'
    exec(@sql)--result
    日期         类型01 余额01         金额01         类型02 余额02         金额02         
    ---------- ---- ------------ ------------ ---- ------------ ------------ 
    2007-01-09 01   1584.5       3169.0       02   762.5        2516.2
    2007-01-24 01   3003.0       6006.2       02   3519.1       7038.4
    2007-01-25 01   5213.0       10426.0      02   2161.4       4322.8