sql - 查找列的最大值并在值为零时在同一列中更新它
问题描述
我有如下所示的表格(附上表格的图像)。
TableA:ID1、ID2 和 Date 列是 Table A 的主键。
ID1|ID2| QTY| Date
1. 11. 10. 01/06/2020
2. 22. 0. 08/06/2020
3. 33. 10. 15/06/2020
4. 44. 0. 22/06/2020
5. 55. 10. 29/06/2020
我想找到一个月的最大 QTY 值,然后将该最大值更新为 QTY 列,该列在 QTY 列中的值为零。
预期结果
ID1|ID2| QTY| Date
1 | 11 |10 | 01/06/2020
2 | 22 | 10| 08/06/2020
3 | 33 | 10| 15/06/2020
4 | 44 | 10| 22/06/2020
5 | 55 | 10| 29/06/2020
请注意:这里的日期列总是不必是星期一的日期。如果任何月份都有所有星期,零作为 QTY。我想从我的查询中排除这些记录
你能帮我用PLSQL怎么做。
解决方案
您可以使用相关子查询:
update t
set qty = (select max(t.qty)
from t t2
where trunc(t2.date, 'MON') = trunc(t.date, 'MON')
where qty = 0;
推荐阅读
- node.js - NodeJs Express 使用响应数据渲染同一页面
- powershell - Powershell ForEach-Object 输出
- javascript - Telegraf 从 Telegram API 发送图像
- git - 当我们在vscode中点击“accept both changes”时,合并冲突时会执行哪个命令?
- visual-studio - 如何在 Visual Studio 中调试启动之前强制评估 startarguments
- java - 如何在Spring中为每个类使用抽象实体和条件属性类型WITH表
- reactjs - 创建动态组件而不是复制 Reactjs
- javascript - 角度展开/折叠表格行 - 使用 ng-bootstrap
- docker - 超集 - OAuth - “没有名为 authlib 的模块”
- django - 如何将预定义的表单列表和条件字典添加到 Sessionwizard (Django 2.2)?