我需要为表创建一个选择查询,该表合并“Number”列上每组的行,以获得包含所有可用但最新(按 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 |
因此,对于每个按“数字”列分组中的所有行,我需要该组中所有行的所有可用列值,但只需要每列的最新值。最新值由列中存在值的“ID”的最高值确定。
(如果组中任何行上都不存在该列中的值,则使用 Null 值)。
Thanks
您可以使用子查询来选择不同的数字。然后,对于每个数字,您可以在另一个子查询中查找各个列。子查询将查找具有最高值的行ID
其中该特定列不为空。
select yt.Number
, (
select top 1 [Date 1]
from YourTable d1
where d1.Number = yt.Number
and d1.[Date 1] is not null
order by
d1.ID desc
) as [Date 1]
, (
select top 1 [Date 2]
from YourTable d2
where d2.Number = yt.Number
and d2.[Date 2] is not null
order by
d1.ID desc
) as [Date 2]
, ...
from (
select distinct Number
from YourTable
) as yt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)