首页 > 解决方案 > 查找列的最大值并在值为零时在同一列中更新它

问题描述

我有如下所示的表格(附上表格的图像)。

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怎么做。

标签: sqlplsql

解决方案


您可以使用相关子查询:

update t
    set qty = (select max(t.qty) 
               from t t2
               where trunc(t2.date, 'MON') = trunc(t.date, 'MON')
    where qty = 0;

推荐阅读