门店                           品类     销量
中山北路购物广场         大家电 589706.0000
中山北路购物广场         精品 416504.3000
中山北路购物广场         两季 1711703.0000
中山北路购物广场         苏泊尔 361881.0000
张家港凤凰金谷路社区店(805401) 精品 10652.5000
张家港凤凰金谷路社区店(805401) 大家电 20787.0000
张家港凤凰金谷路社区店(805401) 两季 462290.0000
张家港凤凰金谷路社区店(805401) 苏泊尔 38847.0000统计成:
     门店                               大家电           精品         两季          苏泊尔
中山北路购物广场                      589706.0000    416504.3000   1711703.0000    361881.0000
张家港凤凰金谷路社区店(805401)        20787.0000     10652.5000    462290.0000     38847.0000

解决方案 »

  1.   

    select 门店,
     sum(case when 品类='a' then 销量 else 0 end)  [a],
     ...
    from tb
    group by 门店
      

  2.   


    declare @T table (门店 varchar(30),品类 varchar(6),销量 numeric(11,4))
    insert into @T
    select '中山北路购物广场','大家电',589706.0000 union all
    select '中山北路购物广场','精品',416504.3000 union all
    select '中山北路购物广场','两季',1711703.0000 union all
    select '中山北路购物广场','苏泊尔',361881.0000 union all
    select '张家港凤凰金谷路社区店(805401)','精品',10652.5000 union all
    select '张家港凤凰金谷路社区店(805401)','大家电',20787.0000 union all
    select '张家港凤凰金谷路社区店(805401)','两季',462290.0000 union all
    select '张家港凤凰金谷路社区店(805401)','苏泊尔',38847.0000select 门店,
    大家电=sum(case when 品类='大家电' then 销量 else 0 end),
    精品=sum(case when 品类='精品' then 销量 else 0 end),
    两季=sum(case when 品类='两季' then 销量 else 0 end),
    苏泊尔=sum(case when 品类='苏泊尔' then 销量 else 0 end)
    from @T group by 门店/*
    门店                             大家电                                     精品                                      两季                                      苏泊尔
    ------------------------------ --------------------------------------- --------------------------------------- --------------------------------------- ---------------------------------------
    张家港凤凰金谷路社区店(805401)            20787.0000                              10652.5000                              462290.0000                             38847.0000
    中山北路购物广场                       589706.0000                             416504.3000                             1711703.0000                            361881.0000
    */
      

  3.   

    --如果品类不确定,需要使用动态SQL,如下:declare @sql varchar(8000)
    set @sql = 'select 门店 '
    select @sql = @sql + ' , sum(case 品类 when ''' + 品类 + ''' then 销量 else 0 end) [' + 品类 + ']'
    from (select distinct 品类 from tb) as a
    set @sql = @sql + ' from tb group by 门店'
    exec(@sql)