查找一列的最大值,如果该值为零,则在同一列中对其进行更新

时间:2020-06-17 15:25:09

标签: sql plsql

我有一个如下所示的表(附有表的图像)。

TableA:ID1,ID2和Date列是表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列中的零值。

预期结果

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。

1 个答案:

答案 0 :(得分:0)

您可以使用相关子查询:

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