月份sql

1608877338(1).jpg






1608877258(1).jpg



第一张图是现有的数据样式,想要改成图2的数据样式,但是月份数据现在只有10月份的,其他月份数据还未添加,想问一下该怎么写sql


年年 发布于 2020-12-25 14:27 (编辑于 2020-12-25 14:33)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
1
shirokoLv6资深互助
发布于2020-12-25 14:29(编辑于 2020-12-25 14:40)

你的数据库是什么

SELECT 人员编号,姓名 ,部门 ,
SUM(CASE WHEN 月份='01' THEN 实发合计 ELSE 0 END) "01月",
SUM(CASE WHEN 月份='02' THEN 实发合计 ELSE 0 END) "02月",
SUM(CASE WHEN 月份='03' THEN 实发合计 ELSE 0 END) "03月",
SUM(CASE WHEN 月份='04' THEN 实发合计 ELSE 0 END) "04月",
SUM(CASE WHEN 月份='05' THEN 实发合计 ELSE 0 END) "05月",
SUM(CASE WHEN 月份='06' THEN 实发合计 ELSE 0 END) "06月",
SUM(CASE WHEN 月份='07' THEN 实发合计 ELSE 0 END) "07月",
SUM(CASE WHEN 月份='08' THEN 实发合计 ELSE 0 END) "08月",
SUM(CASE WHEN 月份='09' THEN 实发合计 ELSE 0 END) "09月",
SUM(CASE WHEN 月份='10' THEN 实发合计 ELSE 0 END) "10月",
SUM(CASE WHEN 月份='11' THEN 实发合计 ELSE 0 END) "11月",
SUM(CASE WHEN 月份='12' THEN 实发合计 ELSE 0 END) "12月",
SUM(实发合计)/12 平均月度工资
FROM TABLE1 A
GROUP BY 人员编号,姓名 ,部门


最佳回答
0
指间沙Lv6中级互助
发布于2020-12-25 14:33(编辑于 2020-12-25 14:43)

WorkBook12.cpt

不用改,上面的月份用扩展的,有就有,没有就没有。

image.png

月份用扩展的。

最佳回答
0
用户p9061960Lv4见习互助
发布于2020-12-25 14:40(编辑于 2020-12-25 14:41)

按逻辑你第二个表的月份的列名应该是横向扩展的,值是实发合计,筛选条件是数据库查询的月份列的月份和上面扩展的列名月份一致

当然你也可以列名写死,就是同一个查询结果每个月份下面放一下,筛选条件写查询中月份等于多少就行了

最佳回答
0
用户t6858032Lv4见习互助
发布于2020-12-25 14:40

sql 的话 百度下行转列公式,应该满足你的需求

最佳回答
0
krystal033Lv7高级互助
发布于2020-12-25 14:40

该有的数据都有 你改啥???

最佳回答
0
xiaomage001Lv6初级互助
发布于2020-12-25 15:01

行转列 假设A是你的表名

SELECT * FROM A

PIVOT 

(

    SUM(实发合计) FOR 

    月份  IN ("01","02","03","04","05","06","07","08","09","10","11","12")

) AS T

出来的字段结果就是

image.png

然后再把这个结果作为子查询  算出平均就OK了

  • 7关注人数
  • 572浏览人数
  • 最后回答于:2020-12-25 15:01
    请选择关闭问题的原因
    确定 取消
    返回顶部