【问题标题】:SQL-Server: Pick Latest Entry of a specific ID from tableSQL-Server:从表中选择特定 ID 的最新条目
【发布时间】:2022-06-13 20:20:34
【问题描述】:

我有下表

Report Number Date Price
77e1117e-a248-4781-866f-704bea114d11 2022-06-13 10:12:42.000 685.10
77e1117e-a248-4781-866f-704bea114d11 2022-06-13 10:12:42.000 0.19
a34f8425-c64f-47a9-b947-49e7d2fd5bba 2022-06-13 13:16:45.000 102.45
a34f8425-c64f-47a9-b947-49e7d2fd5bba 2022-06-13 13:16:45.000 427.13

这是两个报告,每个都有两个条目,在不同的时间生成并产生不同的价格。

我想要一个可以自动选择最新日期并返回与该报告编号相对应的价格总和的脚本/代码。

输出应该是这样的:

Report Number Date Price
a34f8425-c64f-47a9-b947-49e7d2fd5bba 2022-06-13 13:16:45.000 529.58

谢谢大家:)

【问题讨论】:

  • 那么您的数据是否存储为xml?为什么不以标准化格式存储数据?
  • "Pick latest entry" 在这里具有误导性 - 您的示例输出显示了按 ReviewNr 分组的价格汇总。

标签: sql sql-server


【解决方案1】:

类似这样的:

SELECT *
FROM (
    SELECT *,
        ROW_NUMBER() OVER (PARTITION BY ProductId ORDER BY Date DESC ) AS RowNumber,
        SUM(Price) OVER (PARTITION BY ProductId ) PriceSum
    FROM WhateverTableItIs
) T
WHERE RowNumber = 1

(当您的问题是关于 SQL 的时候,为什么还要发布 HTML?!)

【讨论】:

    【解决方案2】:
    Select ReviewNr, [Date], Sum(Price)
    from myTable
    where ReviewNr in (select top(1) reviewNr from myTable order by [Date] desc)
    group by ReviewNr, [Date]; 
    

    DBFiddle demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-21
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 2015-09-07
      • 2023-01-26
      相关资源
      最近更新 更多