我需要为一个表创建一个select查询,合并每个组在'Number'列上的行,以获得具有所有可用但最新(按ID)列的单个行。MySQL合并行值为单行
这里就是我的意思是,我需要一台这样的:
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 |
所以对于每个组中的所有行通过'Number'列,我需要组中所有行的所有可用列值,但只需要每列的最新值。最新值由列中值的最高值'ID'确定。 (如果组中的任何一行中没有值,则使用Null值)。
谢谢
哇,这很快! 我担心有很多子查询,我将这样做的实际表格有超过200,000行,每组最多20-30行。 – JohnHenry
可以进一步对其进行优化,但先尝试一下吗? 200k行对于SQL Server不是很多 – Andomar