declare @s varchar(8000)
set @s=''
select @s=@s+',['+Fstockname+'销售=sum(case Fstockname when '''
+Fstockname+''' then FsaleQty else 0 end),['+Fstockname
+'库存]=sum(case Fstockname when '''+Fstockname
+''' then FinvQty else 0 end)'
from 表
group by Fstockname
exec('select Fmodel,Fsaleprice'+@s+' from 表 group by Fmodel,Fsaleprice')

解决方案 »

  1.   

    查询出来的数据只有两行:
    Fmodel  Fsaleprice
    W103 148.0000000000
    W133 148.0000000000
    W161 148.0000000000
    W131 148.0000000000
    W133 148.0000000000
    W136 148.0000000000
      

  2.   

    问问zjcxc(邹建):
        把select写成字符串运行和直接查询有什么区别吗?
      

  3.   

    好!!我把表全特出来:
    Fmodel(货号Fsaleprice(单价Fstockname(仓库 FsaleQty(销售) FinvQty(库存
    H806 29.0000000000 包头 19.0000000000 19.0000000000
    P2801 29.0000000000 哈尔滨 20.0000000000 20.0000000000
    P2601 29.0000000000 贵阳 22.0000000000 22.0000000000
    P2605 29.0000000000 北京 25.0000000000 25.0000000000
    H806 29.0000000000 北京 25.0000000000 81.0000000000
    P2601 29.0000000000 北京 26.0000000000 30.0000000000
    H806 29.0000000000 哈尔滨 30.0000000000 30.0000000000
    H806 29.0000000000 大连 31.0000000000 49.0000000000
    P2601 29.0000000000 兰州 33.0000000000 47.0000000000
    P2605 29.0000000000 大连 35.0000000000 .0000000000
    P2605 29.0000000000 哈尔滨 37.0000000000 37.0000000000
    P2601 29.0000000000 沈阳 39.0000000000 39.0000000000
    H806B 29.0000000000 总仓 40.0000000000 10.0000000000
    H806B 29.0000000000 沈阳 40.0000000000 40.0000000000
    P2601 29.0000000000 哈尔滨 40.0000000000 40.0000000000
    P2605 29.0000000000 沈阳 45.0000000000 45.0000000000
    P2601 29.0000000000 大连 50.0000000000 .0000000000
    H806 29.0000000000 沈阳 56.0000000000 56.0000000000
    H806 29.0000000000 兰州 57.0000000000 59.0000000000
    P2801 29.0000000000 总仓 85.0000000000 104.0000000000
    P2601 29.0000000000 总仓 127.0000000000 169.0000000000
    P2605 29.0000000000 总仓 130.0000000000 185.0000000000
    H806 29.0000000000 总仓 634.0000000000 536.0000000000
    H801B 32.0000000000 哈尔滨 .0000000000 .0000000000
    H805B 32.0000000000 北京 .0000000000 .0000000000
    H805B 32.0000000000 吉林 .0000000000 .0000000000
    P2702 32.0000000000 汕头 .0000000000 .0000000000
    J2682 32.0000000000 东北 .0000000000 6.0000000000
    J2682 32.0000000000 南京 .0000000000 13.0000000000
    H808 32.0000000000 南京 .0000000000 15.0000000000
    H805 32.0000000000 南京 .0000000000 36.0000000000
    H805B 32.0000000000 合肥 1.0000000000 .0000000000
    P2836 32.0000000000 内蒙 1.0000000000 .0000000000
    H801 32.0000000000 长春 1.0000000000 1.0000000000
    H801B 32.0000000000 贵阳 1.0000000000 1.0000000000
    H805B 32.0000000000 鞍山 1.0000000000 1.0000000000
    H805B 32.0000000000 贵阳 1.0000000000 1.0000000000
    H805B 32.0000000000 西宁 1.0000000000 1.0000000000
    H805B 32.0000000000 新疆 1.0000000000 1.0000000000
    P2618 32.0000000000 合肥 1.0000000000 1.0000000000
    P2810 32.0000000000 浙江 1.0000000000 1.0000000000
    P2836 32.0000000000 合肥 1.0000000000 1.0000000000
    H801 32.0000000000 汕头 2.0000000000 .0000000000
    H801B 32.0000000000 汕头 2.0000000000 .0000000000
    H801 32.0000000000 东北 2.0000000000 2.0000000000
    H801B 32.0000000000 太原 2.0000000000 2.0000000000
    H805B 32.0000000000 包头 2.0000000000 2.0000000000
    J2682 32.0000000000 西宁 2.0000000000 2.0000000000
    P2620 32.0000000000 太原 2.0000000000 2.0000000000
    P2835 32.0000000000 长沙 2.0000000000 2.0000000000
    P2835 32.0000000000 哈尔滨 2.0000000000 2.0000000000
    P2835 32.0000000000 合肥 2.0000000000 2.0000000000
    P2836 32.0000000000 哈尔滨 2.0000000000 2.0000000000
    P2618 32.0000000000 内蒙 2.0000000000 3.0000000000
    P2702 32.0000000000 内蒙 3.0000000000 -1.0000000000
    太多了:(还是没法泉特出来
      

  4.   

    P2633 32.0000000000 大连 3.0000000000 .0000000000
    P2810 32.0000000000 北京 3.0000000000 2.0000000000
    H801 32.0000000000 福建 3.0000000000 3.0000000000
    H808 32.0000000000 汕头 3.0000000000 3.0000000000
    P2618 32.0000000000 哈尔滨 3.0000000000 3.0000000000
    P2618 32.0000000000 太原 3.0000000000 3.0000000000
    P2620 32.0000000000 鞍山 3.0000000000 3.0000000000
    P2633 32.0000000000 吉林 3.0000000000 3.0000000000
    P2633 32.0000000000 太原 3.0000000000 3.0000000000
    P2835 32.0000000000 北京 3.0000000000 3.0000000000
    P2835 32.0000000000 兰州 3.0000000000 3.0000000000
    P2810 32.0000000000 总仓 3.0000000000 4.0000000000
    H805B 32.0000000000 汕头 3.0000000000 5.0000000000
    J2682 32.0000000000 鞍山 3.0000000000 8.0000000000
    H801 32.0000000000 昆明 4.0000000000 4.0000000000
    H801 32.0000000000 内蒙 4.0000000000 4.0000000000
    H801 32.0000000000 郑州 4.0000000000 4.0000000000
    H801B 32.0000000000 长春 4.0000000000 4.0000000000
    H801B 32.0000000000 新疆 4.0000000000 4.0000000000
    H805B 32.0000000000 昆明 4.0000000000 4.0000000000
    J2682 32.0000000000 长春 4.0000000000 4.0000000000
    P2618 32.0000000000 包头 4.0000000000 4.0000000000
    P2620 32.0000000000 包头 4.0000000000 4.0000000000
    P2633 32.0000000000 福建 4.0000000000 4.0000000000
    P2810 32.0000000000 长沙 4.0000000000 4.0000000000
    P2810 32.0000000000 哈尔滨 4.0000000000 4.0000000000
    P2835 32.0000000000 东北 4.0000000000 4.0000000000
      

  5.   

    declare @s varchar(8000)
    set @s=''
    select @s=@s+'
    ,['+Fstockname+'销售]=sum(case Fstockname when '''
    +Fstockname+''' then FsaleQty else 0 end)
    ,['+Fstockname
    +'库存]=sum(case Fstockname when '''+Fstockname
    +''' then FinvQty else 0 end)'
    from 表
    group by Fstockname
    exec('select Fmodel,Fsaleprice'+@s+' 
    from 表 group by Fmodel,Fsaleprice')
      

  6.   

    --测试--测试数据
    create table 表(Fmodel varchar(10),Fsaleprice decimal(15,10),Fstockname varchar(10),FsaleQty decimal(15,10),FinvQty decimal(15,10))
    insert 表 select 'W137'  ,148.0000000000,'汕头',1.0000000000 ,2.0000000000
    union all select 'W230'  ,148.0000000000,'汕头',2.0000000000 ,2.0000000000
    union all select 'W237'  ,148.0000000000,'合肥',3.0000000000 ,2.0000000000
    union all select 'G0360B',148.0000000000,'兰州',4.0000000000 ,3.0000000000
    union all select 'G0360C',148.0000000000,'长春',5.0000000000 ,3.0000000000
    union all select 'W103'  ,148.0000000000,'西宁',6.0000000000 ,3.0000000000
    union all select 'W133'  ,148.0000000000,'兰州',7.0000000000 ,3.0000000000
    union all select 'W161'  ,148.0000000000,'汕头',8.0000000000 ,3.0000000000
    union all select 'W131'  ,148.0000000000,'郑州',9.0000000000 ,4.0000000000
    union all select 'W133'  ,148.0000000000,'鞍山',10.0000000000,4.0000000000
    union all select 'W136'  ,148.0000000000,'内蒙',0.0000000000  ,4.0000000000
    go--查询
    declare @s varchar(8000)
    set @s=''
    select @s=@s+'
    ,['+Fstockname+'销售]=sum(case Fstockname when '''
    +Fstockname+''' then FsaleQty else 0 end)
    ,['+Fstockname
    +'库存]=sum(case Fstockname when '''+Fstockname
    +''' then FinvQty else 0 end)'
    from 表
    group by Fstockname
    exec('select Fmodel,Fsaleprice'+@s+' 
    from 表 group by Fmodel,Fsaleprice')
    go--删除测试
    drop table 表/*--测试结果
    --太长不帖
    --*/
      

  7.   

    老大!是很奇怪!我的那些数据是有的!但每次运行都只有:
    Fmodel  Fsaleprice
    W103 148.0000000000
    W133 148.0000000000
    W161 148.0000000000
    W131 148.0000000000
    W133 148.0000000000
    W136 148.0000000000其它的都没有了!!!
    您的语句没有问题,我也测试了!但为什么一用导我的表上就不行!我的那个表是放在临时表里的!!!#kk结构和我铁出来的一样