请问怎么转换下面的两张表格

yzujjcb 2005-03-23 09:58:11
张三 1月份 1000圆
张三 2月份 3000圆
张三 3月份 56000圆
里斯 1月份
里斯 2月份 6000圆
里斯 3月份 9000圆
王旺 1月份 45500圆
王旺 2月份 450圆
王旺 3月份 450圆
表格1

姓名 一月份工资 二月份工资 三月份工资
张三 1000圆 3000圆 56000圆
里斯 6000圆 9000圆
王旺 45500圆 450圆 450圆
表格2

请问表格1怎么转换为表格2?
...全文
122 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinjazz 2005-03-23
  • 打赏
  • 举报
回复
--建立测试环境
Create Table 表(name varchar(10),month varchar(10),salary varchar(10))
--插入数据
insert into 表
select '张三','1月份','1000圆' union
select '张三','2月份','3000圆' union
select '张三','3月份','56000圆' union
select '里斯','1月份',null union
select '里斯','2月份','6000圆' union
select '里斯','3月份','9000圆' union
select '王旺','1月份','45500圆' union
select '王旺','2月份','450圆' union
select '王旺','3月份','450圆'
--select * from 表
--测试语句
DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT name'
SELECT @SQL= @SQL+
',max(CASE WHEN month = ''' + month + ''' THEN isnull(salary,'''') END) [' + month + ']'
FROM (SELECT DISTINCT month FROM 表) A
SET @SQL=@SQL+' FROM 表 GROUP BY name'
exec (@SQL)

--删除测试环境
Drop Table 表


/*
里斯 6000圆 9000圆
王旺 45500圆 450圆 450圆
张三 1000圆 3000圆 56000圆

*/
menong 2005-03-23
  • 打赏
  • 举报
回复
select name, sum(1月份工资) as 1月份工资, sum(2月份工资) as 2月份工资, SUM(3月份工资) as 1月份工资
from (
select name, 1月份工资=case when 月份='1月份' then 工资 else 0 end,
2月份工资=case when 月份='2月份' then 工资 else 0 end,
3月份工资=case when 月份='3月份' then 工资 else 0 end
from table) a
group by name

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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