获取 MS Access 中每列的最新值

Get the latest values in each column in MS Access

提问人:Arian 提问时间:11/1/2023 最后编辑:marc_sArian 更新时间:11/1/2023 访问量:83

问:

请考虑 MS Access 中的下表:

Id       Year       Month         F1         F2         F3         F4
----------------------------------------------------------------------
1        2020         1           A          B          1          2
1        2020         2           AA      
1        2020         3                      BB         11
2        2020         1                                 3          4
2        2020         2           F          G 

我想要这个结果:

Id       F1         F2         F3         F4
-----------------------------------------------
1        AA         BB         11         2
2        F          G          3          4

我想要每列中的最新值,并将它们合并到每一行中。Id

如何使用MS Access中的查询实现此结果。

sql ms-access 合并 ms-access-query

评论


答:

3赞 id'7238 11/1/2023 #1
SELECT
    Id,
    (SELECT TOP 1 F1 FROM test t1 WHERE t1.Id = t.Id AND F1 IS NOT NULL ORDER BY [Year] DESC, [Month] DESC) AS F1,
    (SELECT TOP 1 F2 FROM test t1 WHERE t1.Id = t.Id AND F2 IS NOT NULL ORDER BY [Year] DESC, [Month] DESC) AS F2,
    (SELECT TOP 1 F3 FROM test t1 WHERE t1.Id = t.Id AND F3 IS NOT NULL ORDER BY [Year] DESC, [Month] DESC) AS F3,
    (SELECT TOP 1 F4 FROM test t1 WHERE t1.Id = t.Id AND F4 IS NOT NULL ORDER BY [Year] DESC, [Month] DESC) AS F4
FROM (
    SELECT DISTINCT Id 
    FROM test
) t

如果示例中的空单元格是空字符串而不是 NULL,则子查询中的条件将为 .F1 <> "