【发布时间】:2012-01-09 15:22:05
【问题描述】:
我需要为一个表创建一个选择查询,该表合并“数字”列上每个组的行,以获得包含所有可用但最新(按 ID)列的单行。
我的意思是,我需要这样一张桌子:
ID | Number | Date 1 | Date 2 | Date 3 |
----------------------------------------------------
1 | 1 | 2011-10-01 | NULL | NULL |
2 | 1 | NULL | 2011-10-25 | NULL |
3 | 1 | NULL | NULL | 2011-11-13 |
4 | 1 | 2011-10-03 | NULL | 2011-11-10 |
5 | 2 | NULL | NULL | 2012-01-01 |
6 | 2 | 2012-03-11 | NULL | NULL |
并返回此(ID 列与上述 ID 列无关):
ID | Number | Date 1 | Date 2 | Date 3 |
----------------------------------------------------
1 | 1 | 2011-10-03 | 2011-10-25 | 2011-11-10 |
2 | 2 | 2012-03-11 | NULL | 2012-01-01 |
因此,对于每个 Group By 'Number' 列中的所有行,我需要该组中所有行的所有可用列值,但只需要每列的最新值。最新的由列中存在值的“ID”的最大值确定。 (如果组中的任何行上不存在列中的值,则使用 Null 值)。
谢谢
【问题讨论】:
标签: mysql sql merge greatest-n-per-group