如何實現下列數據表格式轉換﹖

金木水火土1968 2003-08-17 11:26:17

如下表(物理表)﹕

編號 姓名 月份 工資
---- ---- ------- ----
001 王三 2003-01 2200
001 王三 2003-02 2120
001 王三 2003-03 2300
001 王三 2003-04 2260
002 李四 2003-01 3200
002 李四 2003-02 3200
002 李四 2003-03 2900
002 李四 2003-04 3400
......


生成如下格式的表﹕

編號 姓名 1月 2月 3月 4月 工資合計
---- ---- ---- ---- ---- ---- --------
001 王三 2200 2120 2300 2260 8880
002 李四 3200 3200 2900 3400 12700
......


請教如何編寫SQL語句﹗ 謝﹗﹗﹗
...全文
19 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
97866 2003-08-17
  • 打赏
  • 举报
回复
select 编号,姓名,sum(case when Month(月份)=1 then 工资 else 0 end) as 1月,
sum(case when Month(月份)=2 then 工资 else 0 end) as 2月,
sum(case when Month(月份)=3 then 工资 else 0 end) as 3月,
sum(case when Month(月份)=4 then 工资 else 0 end) as 4月,
工资合计=Sum(工资) from tablename Group by 编号,姓名,Year(月份)
sdhdy 2003-08-17
  • 打赏
  • 举报
回复
select 编号 , 姓名,1月,2月,3月,4月, 工资合计=1月+2月+3月+4月 from (select 编号 , 姓名,
sum(case when 月份='2003-01' then 工资 else 0 end) as 1月,
sum(case when 月份='2003-02' then 工资 else 0 end) as 2月,
sum(case when 月份='2003-03' then 工资 else 0 end) as 3月,
sum(case when 月份='2003-04' then 工资 else 0 end) as 4月
from tablename
group by 编号 , 姓名)a order by 编号 , 姓名
sdhdy 2003-08-17
  • 打赏
  • 举报
回复
select 编号 , 姓名,
sum(case when 月份='2003-01' then 工资 else 0 end) as 1月,
sum(case when 月份='2003-02' then 工资 else 0 end) as 2月,
sum(case when 月份='2003-03' then 工资 else 0 end) as 3月,
sum(case when 月份='2003-04' then 工资 else 0 end) as 4月,
sum(工资) as 工资合计
from tablename
group by 编号 , 姓名

22,207

社区成员

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

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