select 时间,
       [A001]=sum(case when 编号='A001' then 值 else 0 end),
       [A001]=sum(case when 编号='A002' then 值 else 0 end)
from 表
group by 时间

解决方案 »

  1.   

    declare @sql varchar(6000)
      set @sql = 'select 时间,'
      select @sql = @sql +' ['+ 编号 +']=sum(case 编号 when '''+ 编号 +''' then 值 else 0  end),' from tblA group by 时间
      set @sql = left(@sql,len(@sql)-1) +' from 表 group by 时间'
      exec(@sql)
      

  2.   

    --上面写的有问题,改一下
    --测试
    create table 表(编号 char(4),时间 datetime,值 numeric(10,2))
    insert 表 select 'A001','2005-1-1 10:00:00',     11.23
    insert 表 select 'A002','2005-1-1 10:00:00',     14.31
    insert 表 select 'A001','2005-1-2  11:10:21',    21.12
    insert 表 select 'A002','2005-1-2  11:10:21',    12.45
    declare @sql varchar(6000)
      set @sql = 'select 时间,'
      select @sql = @sql +' ['+ 编号 +']=sum(case 编号 when '''+ 编号 +''' then 值 else 0  end),' from 表 group by 编号
      set @sql = left(@sql,len(@sql)-1) +' from 表 group by 时间'
      exec(@sql)--结果
    时间                       A001                A002              
    ------------------------ ------------------- -------------------
    2005-01-01 10:00:00.000  11.23               14.31
    2005-01-02 11:10:21.000  21.12               12.45
    --删除测试环境
    drop table 表
    go
      

  3.   

    create table #t (bh varchar(10),dates datetime,value dec(5,2))
    insert into #t select 'A001',   '2005-1-1 10:00:00',     11.23
    union all select 'A002',   '2005-1-1 10:00:00',     14.31
    union all select 'A001'   ,'2005-1-2  11:10:21',    21.12
    union all select 'A002'   ,'2005-1-2  11:10:21',    12.45declare @sql varchar(6000)
      set @sql = 'select dates,'
      select @sql = @sql +' ['+ bh +']=sum(case bh when '''+ bh +''' then value else 0  end),' from #t group by bh
      set @sql = left(@sql,len(@sql)-1) +' from #t group by dates'  exec(@sql)
    drop table #t
      

  4.   

    好像不行啊,提示value附近有语法错误
      

  5.   

    declare @sql varchar(8000)
    Set @sql = 'Select '
    Select @sql = @sql + 'Max(['+编号+']) As ['+ 编号 +'],' From 表 Group By 编号 
    set @sql = left(@sql,len(@sql)-1) +' From ( Select 时间,值,'
    select @sql = @sql +' ['+ 编号 +']= (case 编号 when '''+ 编号 +''' then  值 else null  end),' From 表 Group By 编号
    set @sql = left(@sql,len(@sql)-1) +' From 表 ) T_ta Group By 时间,值'
    exec(@sql)
      

  6.   

    这样应该可以了,
    declare @sql varchar(8000)
    Set @sql = 'Select 时间,'
    Select @sql = @sql + 'Max(['+编号+']) As ['+ 编号 +'],' From 表 Group By 编号 
    set @sql = left(@sql,len(@sql)-1) +' From ( Select 时间,值,'
    select @sql = @sql +' ['+ 编号 +']= (case 编号 when '''+ 编号 +''' then  值 else null  end),' From 表 Group By 编号
    set @sql = left(@sql,len(@sql)-1) +' From 表 ) T_ta Group By 时间,值'
    exec(@sql)
      

  7.   

    To jzdmyjzd(晓明):
    还是不行,提示cas附近错误
      

  8.   

    --这个应该可以吧--测试
    create table 表(编号 char(4),时间 datetime,值 numeric(10,2))
    insert 表 select 'A001','2005-1-1 10:00:00',     11.23
    insert 表 select 'A002','2005-1-1 10:00:00',     14.31
    insert 表 select 'A001','2005-1-2  11:10:21',    21.12
    insert 表 select 'A002','2005-1-2  11:10:21',    12.45
    declare @sql varchar(6000)
      set @sql = 'select 时间,'
      select @sql = @sql +' ['+ 编号 +']=sum(case 编号 when '''+ 编号 +''' then 值 else 0  end),' from 表 group by 编号
      set @sql = left(@sql,len(@sql)-1) +' from 表 group by 时间'
      exec(@sql)--结果
    时间                       A001                A002              
    ------------------------ ------------------- -------------------
    2005-01-01 10:00:00.000  11.23               14.31
    2005-01-02 11:10:21.000  21.12               12.45
    --删除测试环境
    drop table 表
    go
      

  9.   

    用以下测试数据没有问题
    insert 表 select 'A001','2005-1-1 10:00:00',     11.23
    insert 表 select 'A002','2005-1-1 10:00:00',     14.31
    insert 表 select 'A001','2005-1-2  11:10:21',    21.12
    insert 表 select 'A002','2005-1-2  11:10:21',    12.45但是如果有200个编号的时候就会出错。
      

  10.   

    用以下测试数据没有问题
    insert 表 select 'A001','2005-1-1 10:00:00',     11.23
    insert 表 select 'A002','2005-1-1 10:00:00',     14.31
    insert 表 select 'A001','2005-1-2  11:10:21',    21.12
    insert 表 select 'A002','2005-1-2  11:10:21',    12.45但是如果有200个编号的时候就会出错。
      

  11.   

    --可以用自己构造变量
    --参考邹老大的:
    http://dev.csdn.net/develop/article/22/22989.shtm