如何在 SQL Server 中执行 max to date 操作? [重复]

问题描述 投票:0回答:2

我尝试按名称获取每行的

last_modify_date
列的最大值。

我只得到一个结果,但我想要得到类似这样的结果:

name | v | last_modify_date
---------------------------
example1 | 100 | 2024-01-03 12:00:00
example2 | 100 | ...
example3 | 100 | ...

查询:

CREATE TABLE MyTable 
(
    name VARCHAR(50),
    value INT,
    last_modify_date DATETIME
);

INSERT INTO MyTable (name, value, last_modify_date) 
VALUES ('Example1', 100, '2024-01-01 12:00:00'),
       ('Example1', 100, '2024-01-02 12:00:00'),
       ('Example1', 100, '2024-01-03 12:00:00'),
       ('Example2', 100, '2024-01-02 12:00:00'),
       ('Example2', 100, '2024-01-02 18:00:00'),
       ('Example3', 100, '2024-01-02 12:00:00');

SELECT name, [value] as v, MAX(last_modify_date) 
FROM MyTable;

PS:如果可以不使用 group by,因为在我的原始查询中我选择了 30 列,并且我不想在 group by 中重复这些列。

sql-server
2个回答
0
投票

下面的内容对我有用,但请注意,该表在关系数据方面并不是很好的设计,并且这适用于提供的示例数据,我不确定您是否能够避免实际数据中的重复。还要尝试避免使用 SQL 关键字(如“值”和“名称”)命名列

SELECT name, [value] as v, max(last_modify_date) FROM 
MyTable
group by name, value

数据:

结果:


-1
投票

当然,您可以按照上面的方法进行分组,然后将结果连接回主键上的原始表。 (不过不知道它是什么)。

© www.soinside.com 2019 - 2024. All rights reserved.