首页 > 解决方案 > 在最大值上更新表的存储过程

问题描述

我需要一个没有任何参数的存储过程。它可以利用临时表或任何需要的东西。

输入表:

row#| group_id | invoice_type_id | transformed_id |  net 
1   | 7        |    1            | NULL           |  28.40 
2   | 7        |    2            | NULL           |  11.00
3   | 7        |    3            |                |  65.00
4   | 7        |    4            |                |  17.00
5   | 7        |    3            |                |  18.00
6   | 7        |    4            |                |  34.50
7   | 8        |    1            |                |  58.00

期望的输出:

row#| group_id | invoice_type_id | transformed_id |  net 
1   | 7        |    1            | NULL           |  28.40 
2   | 7        |    2            | NULL           |  11.00
3   | 7        |    3            | 1              |  65.00
4   | 7        |    4            | 2              |  17.00
5   | 7        |    3            | 2              |  18.00
6   | 7        |    4            | 1              |  34.50
7   | 8        |    1            |                |  58.00

解释:假设我们对数据进行分组,group_id并且第一组有group_id=7)。在该组数据中,将有一行带有invoice_type_id=1,另一行带有invoice_type_id=2。我需要过滤行invoice_type_id=3并使用max(net). 必须更新该行SET transformed_id=12(以较高者为准。我对输出第三行#3 进行采样,因为其中 invoice_type_id= 1的行#1 高于行#2)。剩下的行invoice_type_id=3应该更新SET transformed_id=12(以较低者为准)。也是如此invoice_type_id=4

它应该对每组数据进行迭代(按 分组group_id)并重复上述逻辑。

标签: mysqlsqldatabasestored-procedures

解决方案


推荐阅读