Sql 查找列的最大值,如果该值为零,则在同一列中更新该值
我有如下所示的表格(附上表格图像) TableA:ID1、ID2和Date列是表A的主键Sql 查找列的最大值,如果该值为零,则在同一列中更新该值,sql,plsql,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 我想找到一个月的最大数量值,然后将该最大值更新到数量列中,数量列中的值为零 预期结果 ID1|ID2| QT
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
我想找到一个月的最大数量值,然后将该最大值更新到数量列中,数量列中的值为零
预期结果
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
请注意:此处的“日期”列始终不必是星期一的日期。如果任何月份的所有周都是星期一,则零为数量。我想从查询中排除这些记录
您可以帮助我如何使用PLSQL执行此操作。您可以使用相关子查询:
update t
set qty = (select max(t.qty)
from t t2
where trunc(t2.date, 'MON') = trunc(t.date, 'MON')
where qty = 0;
您可以使用相关子查询:
update t
set qty = (select max(t.qty)
from t t2
where trunc(t2.date, 'MON') = trunc(t.date, 'MON')
where qty = 0;
感谢您的回复Gordon。这里的数据始终不必是星期一的日期。如果任何月份的所有周的数量都为零。我想从我的查询中排除这些记录。有什么办法可以实现吗?@user1917985。“星期一”和什么有什么关系?
trunc()
将截断到月初。@谢谢戈登。@user1917985。如果这解决了你的问题,你可以考虑接受答案。我已经接受了答案“戈登,你所提供的解决方案是有效的。谢谢你的答复戈登。这里的数据总是不必是星期一的日期。如果任何月份都有0个星期作为QTY。我想排除我的查询中的那些记录。有什么办法可以实现吗?@user1917985。“星期一”和什么有什么关系?trunc()
将截断到月初。@谢谢戈登。@user1917985。如果这解决了你的问题,你可以考虑接受答案。我已经接受了答案:戈登,你提供的解决方案正在工作。谢谢。