select 成本中心代码,成本中心名称
,工具类=sum(case 产品类别 when '工具类' then 接收数量*单价 end)
,化工类=sum(case 产品类别 when '化工类' then 接收数量*单价 end)
,劳保医药类=sum(case 产品类别 when '劳保医药类' then 接收数量*单价 end)
,合计=sum(接收数量*单价)
from Porvsum 
where 成本中心名称='电饭煲机加车间' 
group by 成本中心代码,成本中心名称
order by  成本中心代码

解决方案 »

  1.   

    To zjcxc(邹建) 兄:
      如果我的产品类别是动态的,该如何写呢?
      

  2.   

    azsoft(Try my best) 兄:“采用“行列转换”动态显示 -产品类别”是什么意思?
      

  3.   

    大概:declare @SQL varchar(8000)
    select @SQL='select 成本中心代码,成本中心名称'
    select @SQL=@sql+',sum(case '''+[产品类别]+''' when ['+[产品类别]+'] then 接收数量*单价 end) ['+[产品类别]+'] )' 
    from (select distinct 产品类别 from Porvsum) as a
    select @SQL=@SQL+' where 成本中心名称='电饭煲机加车间' 
        group by 成本中心代码,成本中心名称
        order by  成本中心代码 'exec (@SQL)
      

  4.   

    你试试,如果不对,搜索“行列转换”declare @SQL varchar(8000)
    select @SQL='select 成本中心代码,成本中心名称'
    select @SQL=@sql+',sum(case '''+[产品类别]+''' when ['+[产品类别]+'] then 接收数量*单价 end) ['+[产品类别]+'] ,合计=sum(接收数量*单价) )' 
    from (select distinct 产品类别 from Porvsum) as a
    select @SQL=@SQL+' where 成本中心名称='电饭煲机加车间' 
        group by 成本中心代码,成本中心名称
        order by  成本中心代码 'exec (@SQL)
      

  5.   

    where 成本中心名称=''电饭煲机加车间'' 
      

  6.   

    declare @SQL varchar(8000)
    select @SQL='select 成本中心代码,成本中心名称'
    select @SQL=@sql+',sum(case '''+[产品类别]+''' when ['+[产品类别]+'] then 接收数量*单价 end) ['+[产品类别]+'] ,合计=sum(接收数量*单价) )' 
    from (select distinct 产品类别 from Porvsum) as a
    select @SQL=@SQL+' where 成本中心名称=''电饭煲机加车间'' 
        group by 成本中心代码,成本中心名称
        order by  成本中心代码 'print @sql  --看看执行的原理,一看就知道了
      

  7.   

    我也是这样改的:
       where 成本中心名称=''电饭煲机加车间'' 但是执行会提示:
       服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: ')' 附近有语法错误。
      

  8.   

    ... ['+[产品类别]+']),合计=sum(接收数量*单价) ' ...
      

  9.   

    最后调试通过,语句整理如下:
    declare @SQL varchar(8000)
    select @SQL='select 成本中心代码,成本中心名称'
    select @SQL=@sql+',sum(case 产品类别 when '''+[产品类别]+''' then 接收数量*单价 end) '''+[产品类别]+'''' 
    from (select distinct 产品类别 from Porvsum) as a
    select @SQL=@SQL+',sum(接收数量*单价) 合计 from Porvsum where 成本中心代码 like ''%050201%'' and 接收日期>=''2004-07-28'' and 接收日期<=''2004-08-27''
        group by 成本中心代码,成本中心名称
        order by  成本中心代码 '
    exec (@sql)