我真的不知道这个查询怎么写:
T1: ID,客户名称,金额
如果查询: 
SELECT * from T1 
结果是:
1   上海1   100
2   上海2   120
3   上海3   150
4   上海4   160
.
.
.
100 上海100  2020我现在想查询的结果是这样的:序号 上海1 上海2 上海3 上海4 ............上海100
1    100   120   150   160   ............2020如何写呢?
总不可能把每一个结果查出来填到相应字段吧?

解决方案 »

  1.   

    declare @s varchar(8000)
    set @s='select 1 as 序号'
    select @s=@s+','+客户名称+'=sum(case 客户名称 when '''+客户名称+''' then 金额 end)' from T1 group by 客户名称
    set @s=@s+' from T1'
    exec(@s)
      

  2.   

    用print @s 把组织的SQL打印出来看看。
      

  3.   

    TO :libin_ftsafe(子陌红尘) 解释一下好吗?
      

  4.   

    create table T1(ID int,客户名称 varchar(10),金额 int)
    insert into T1 select 1,'上海1',100
    insert into T1 select 2,'上海2',120
    insert into T1 select 3,'上海3',150
    insert into T1 select 4,'上海4',160declare @s varchar(8000)
    set @s='select 1 as 序号'
    select @s=@s+','+客户名称+'=sum(case 客户名称 when '''+客户名称+''' then 金额 end)' from T1 group by 客户名称
    set @s=@s+' from T1'
    exec(@s)/*
    序号        上海1       上海2       上海3       上海4         
    ----------- ----------- ----------- ----------- ----------- 
    1           100         120         150         160
    */drop table T1
    ------------------------------------------------------------------------------------------------------------------语法上没问题,可能是超过了8000字节的长度限制。