有没好的SQL语句实现功能,在前台做的性能不理想,
表 Test
ID  Value
-------------------
A  2.0
A  3.0
A   2.5
A   2.3
B   1.3
B   1.6
C   1.7
C   1.8
C   2.2
产生如下结果
NewID  A          B           C
1     2.0        1.3         1.7
2     3.0        1.6         1.8
3     2.5                    2.2
4     2.3

解决方案 »

  1.   

    in oracle:
      use decode
    in db2:
      use case
    in sql server:
      use iif
      

  2.   

    select id NewID,
      sum(case ID when A then value else 0 end) A,
      sum(case ID when B then value else 0 end) B,
      sum(case ID when C then value else 0 end) C
    from test
    group by ID
    或者使用通用的方法:j9988的帖子
    create table #temp(field1 varchar(10),field2 int)
    go
    declare @a varchar(10)
    declare @b int
    declare @sql nvarchar(300)
    declare ctr cursor for
    select field1 from tableB 
    open  ctr
    fetch next from ctr into @a
    while @@fetch_status<>-1 
    begin
    set @sql='select top 1 @m='+@a+' from tableA '
    exec sp_executesql @sql,N'@m int output',@b output
    insert into #temp(field1,field2) values(@a,@b)
    fetch next from ctr into @a
    end
    close ctr
    deallocate ctr
    go 
    select * from #temp
      

  3.   

    我用的sql server, 用了case (其实与iif也是一样)但并不好实现,能给给出你的实现语句吗