求一个语句

weisai 2019-10-16 03:30:49
数据结果表(数据结果表初始状态,处理项目外,12个月全是0,项目现在只列了3个,实际上是有80多个)

项目 1月 2 月 .......12月
A 0 0 0
B 0 0 0
C 0 0 0



数据来源表
月份 项目 金额
1 A 100
2 A 200
1 B 300
2 B 400
1 C 150
2 C 250


要求结果:把数据结果表更新为
项目 1月 2 月 .......12月
A 100 200 0
B 300 400 0
C 150 250 0
...全文
114 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
RINK_1 2019-10-16
  • 打赏
  • 举报
回复

UPDATE TABLE
SET 1月=B.1月,
    2月=B.2月
    .
    .
    .
    12月=B.12月
FROM TABLE A 
JOIN
(SELECT 项目,
 SUM(CASE WHEN 月份=1 THEN 金额 ELSE 0 END) AS 1月,
 SUM(CASE WHEN 月份=2 THEN 金额 ELSE 0 END) AS 2月,
.
.
.
 SUM(CASE WHEN 月份=12 THEN 金额 ELSE 0 END) AS 12月
FROM TABLE
GROUP BY 项目) AS B ON A.项目=B.项目

weisai 2019-10-16
  • 打赏
  • 举报
回复
引用 1 楼 RINK_1 的回复:
SELECT 项目,
SUM(CASE WHEN 月份=1 THEN 金额 ELSE 0 END) AS 1月,
SUM(CASE WHEN 月份=2 THEN 金额 ELSE 0 END) AS 2月,
.
.
.
SUM(CASE WHEN 月份=12 THEN 金额 ELSE 0 END) AS 12月
FROM TABLE
GROUP BY 项目

或者PIVOT


怎么upate 到 数据结果表(实体表)
RINK_1 2019-10-16
  • 打赏
  • 举报
回复
SELECT 项目, SUM(CASE WHEN 月份=1 THEN 金额 ELSE 0 END) AS 1月, SUM(CASE WHEN 月份=2 THEN 金额 ELSE 0 END) AS 2月, . . . SUM(CASE WHEN 月份=12 THEN 金额 ELSE 0 END) AS 12月 FROM TABLE GROUP BY 项目 或者PIVOT

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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