我在 stackoverflow 上查看了有关选择最大值或替换列值的各种答案,但我似乎无法弄清楚如何同时执行这两项操作并返回所有行。基本上我想返回所有行,但如果另一行在同一列和相同标识符中具有更高的数字,则替换给定行中的列的值。
我不是 SQL 专家,这让我摸不着头脑...我希望这可以通过查询来完成,而无需更新数据。也许我需要重新处理数据,但这将是一项巨大的手动任务。也许我可以在 View 中执行此操作?我很感激并愿意接受任何有关如何执行此操作的建议。
下面是正在查询的 View 的示例。 “代码”是公共(public)字段。
+-------+-------+-----------------------------------+
| type1 | type2 | code | amt | |
+-------+-------+-----------------------------------+
| 1 | A | 100 | 59 |
| 1 | B | 200 | 75 |
| 2 | C | 100 | 65 <-- Max for code 100 |
| 2 | D | 200 | 80 <-- Max for code 200 |
| 3 | E | 100 | 55 |
| 3 | F | 200 | 70 |
+-------+-------+-----------------------------------+
我需要返回所有行,但如果“代码”相同并且另一行中的数字更高,则将“amt”替换为最大值。这是我正在寻找的输出的示例:
+-------+-------+------------------------------------------------+
| type1 | type2 | code | amt | |
+-------+-------+------------------------------------------------+
| 1 | A | 100 | 65 <-- replaced w/max for code 100 |
| 1 | B | 200 | 80 <-- replaced w/max for code 200 |
| 2 | C | 100 | 65 |
| 2 | D | 200 | 80 |
| 3 | E | 100 | 65 <-- replaced w/max for code 100 |
| 3 | F | 200 | 80 <-- replaced w/max for code 200 |
+-------+-------+------------------------------------------------+
在查询中尝试此操作的原因是保留原始数据。这可以通过查询实现吗?还是我需要尝试更新数据?非常感谢!
最佳答案
关于SQL - 选择所有行并将列值替换为带有标识符的最大列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22317332/