sql - 选择具有多个 DATETIME 值的最大日期

我正在从数据库中查找信息以在日期时间列中查找最新时间。有时一个进程每天完成多次,我只想查看当天的最新消息。

我已尝试使用 INNER JOIN 语句,但我返回的是 MAX Date。

数据示例如下:

Time                 |    Product
2019-01-01-22:15     |    CHEESE
2019-01-01-22:35     |    CHEESE
2019-01-02-22:35     |    CHEESE
2019-01-02-22:37     |    CHEESE

显示为

Time                 |    Product
2019-01-01-22:35     |    CHEESE
2019-01-02-22:37     |    CHEESE

这将适用于多个产品

* 编辑 *

我需要这个用于一个月的多个日期

* 编辑 * 这将是当天的其他产品,奶酪就是其中的一个例子

所以:

 Time                 |    Product
    2019-01-01-22:15     |    CHEESE
    2019-01-01-22:35     |    CHEESE
    2019-01-01-22:45     |    BREAD
    2019-01-01-22:57     |    BREAD
    2019-01-02-22:35     |    CHEESE
    2019-01-02-22:37     |    CHEESE
    2019-01-02-22:35     |    BREAD
    2019-01-02-22:37     |    BREAD

显示为

Time                 |    Product
2019-01-01-22:35     |    CHEESE
2019-01-01-22:57     |    BREAD
2019-01-02-22:37     |    CHEESE
2019-01-02-22:37     |    BREAD

最佳答案

一个选择是使用 top 1 with tiesrow_number with casting:

SELECT TOP 1 WITH TIES [Time], Product
FROM TableName
ORDER BY ROW_NUMBER() OVER(
    PARTITION BY Product, CAST([Time] AS Date) 
    ORDER BY CAST([Time] AS Time) DESC)

row_number 将为每个日期的最晚时间返回 1。

另一种选择是使用像这样的公共(public)表表达式(或派生表):

WITH CTE AS
(
    SELECT [Time], 
           Product,
           ROW_NUMBER() OVER(
               PARTITION BY Product, CAST([Time] AS Date) 
               ORDER BY CAST([Time] AS Time) DESC) As Rn
    FROM TableName
)
SELECT [Time], Product
FROM CTE
WHERE Rn = 1

这样您就可以决定如何对结果进行排序。

https://stackoverflow.com/questions/54292937/

相关文章:

angular - 如何从测试代码中触发 Angular Material MatSelect 上的

amazon-s3 - 将名称包含尾部斜杠的文件上传到 AWS S3 存储桶

python - 如何从兄弟目录导入python模块?

python - 保持 Python 脚本运行的简单方法?

spring-boot - 斯波克测试 : Too few invocation

python - 获取数组的最后一个索引的时间复杂度是多少?

python - Pandas 中 "&"和 "and"之间的区别

apache-kafka - 用于重复数据删除的 Kafka 压缩

python-3.x - Pandas df.to_sql 不适用于红移

python - 使用多行字符串时的缩进