select 成本中心代码,成本中心名称
,工具类=sum(case 产品类别 when '工具类' then 接收数量*单价 end)
,化工类=sum(case 产品类别 when '化工类' then 接收数量*单价 end)
,劳保医药类=sum(case 产品类别 when '劳保医药类' then 接收数量*单价 end)
,合计=sum(接收数量*单价)
from Porvsum
where 成本中心名称='电饭煲机加车间'
group by 成本中心代码,成本中心名称
order by 成本中心代码
解决方案 »
- 大家目测一下这结果该是什么
- 加急求助:字符哑终端与路由器异步串口连网的原理??也就是银行或邮政用的终端连网的那种。
- 高手帮我看个SQL好奇怪不知道错哪
- 好怀念vb6中的Format(日期,"YYYY-MM-DD HH:MM:SS")函数的功能,所以自己写了一个SQLSERVER自定义函数,没有把握,请各位高手帮我确认一下
- 一个数据表的显示问题
- 求一条UPDATE语句
- 怎么用SQL语句行列交换?
- 100分请教
- 关于MS SQL Server的字符字段的空格问题
- 哪位大神搞过从sqlserver2005中读取Image二进制数据,生成文件
- 发现服务器SQL安全漏洞,怎么解决?
- 字符较长,可能超过4000, 这怎样设置这个字段呢??
如果我的产品类别是动态的,该如何写呢?
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)
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)
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 --看看执行的原理,一看就知道了
where 成本中心名称=''电饭煲机加车间'' 但是执行会提示:
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: ')' 附近有语法错误。
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)