怎么用语句查询得出这样一个表?万分感谢!
不知道需要把行变成列,而且每列对应的结果要减去前面累积的和。请看下图。每个PO对应的型号有表,每个型号对应的工艺流程有表,PO对应的交期也是已知数。怎么统计成生产计划?
SQL 如何把行变成列,而且每列对应的结果要减去前面累积的和。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 如果是oracle数据库,可以用pivot;
如果是其他的数据库,通用写法就是case when,而且你这固定列了用case when也没毛病。另外,如果要写得不套那么多层的话,需要数据库支持开窗函数或者递归,比如sqlserver2017、mysql8、oracle等数据库。
当然,既然前面这个流程表有固定的值,那么不介意再添加一列,第5行等于10、第4行等于18、第3行等于23,以此类推,这样可以让sql得到简化
先来个oracle的
create table step_test (id number,name varchar2(1),hour number); insert into step_test (ID, NAME, HOUR) values (1, 'A', 8); insert into step_test (ID, NAME, HOUR) values (2, 'B', 16); insert into step_test (ID, NAME, HOUR) values (3, 'C', 5); insert into step_test (ID, NAME, HOUR) values (4, 'D', 8); insert into step_test (ID, NAME, HOUR) values (5, 'E', 10); commit; select * from (select NAME, date '2021-01-05' - (sum(hour) over(order by id desc rows between UNBOUNDED PRECEDING and current row)) / 24 hh from step_test x) pivot(max(hh) for name in('A' A, 'B' B, 'C' C, 'D' D, 'E' E))
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 ogg dd trandata 报错
- ¥15 高缺失率数据如何选择填充方式
- ¥50 potsgresql15备份问题
- ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
- ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
- ¥60 pb数据库修改与连接
- ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
- ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
- ¥20 神经网络Sequential name=sequential, built=False
- ¥16 Qphython 用xlrd读取excel报错