这样的表怎么做。

by_封爱 2011-06-21 10:40:00
表 A

编号 名称 经费分类 支出金额
01 名称1 分类1 100
01 名称1 分类2 200
02 名称2 分类1 300
02 名称2 分类2 400

要导出这样的格式,一条语句能实现吗?
编号 名称 分类1 分类2
01 名称1 100 200
02 名称2 300 400
...全文
74 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-06-21
  • 打赏
  • 举报
回复
select
编号,名称,
sum(case when 经费分类='分类1' then 支出金额 else 0 end) 分类1,
sum(case when 经费分类='分类2' then 支出金额 else 0 end) 分类2
from
tb
group by
编号,名称
挨踢直男 2011-06-21
  • 打赏
  • 举报
回复
不好意思,4楼的回答有错误,是sum
AcHerat 2011-06-21
  • 打赏
  • 举报
回复

select 编号,名称,sum(case when 经费分类='分类1' then 支出金额 else 0 end) 分类1,
sum(case when 经费分类='分类2' then 支出金额 else 0 end) 分类2
from tb
group by 编号,名称
挨踢直男 2011-06-21
  • 打赏
  • 举报
回复
select * from tb
pivot(
max(支出金额) for 经费分类 in ([分类1],[分类2])
) as p
cd731107 2011-06-21
  • 打赏
  • 举报
回复
select a.编号,a.名称,a.支出金额 as 分类1,b.支出金额 as 分类2
from ta a , ta b
where a.编号=b.编号
and a.名称=b.名称
and a.经费分类='分类1'
and b.经费分类='分类2'
-晴天 2011-06-21
  • 打赏
  • 举报
回复
select a.编号,a.名称,a.支出金额 as 分类1,b.支出金额 as 分类2
from ta a inner join ta b on a.编号=b.编号 and a.名称=b.名称 and a.经费分类='分类1' and b.经费分类='分类2'
kevn 2011-06-21
  • 打赏
  • 举报
回复
行转列,网上好多列子
老潘 2011-06-21
  • 打赏
  • 举报
回复
1. 使用case when分组计算
2. 使用pivot计算

如果分类不固定,需要动态拼接SQL语句再执行

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧