c# - 仅获取每个名称的最新日期的行
问题描述
我正在尝试编写一个查询,该查询仅返回那些包含每个名称的最新日期的行。
例如,这个数据:
姓名 | 售出日期 | 更多列... |
---|---|---|
鲍勃 | 2021-01-05 | |
麦克风 | 2021-01-18 | |
苏珊 | 2021-01-23 | |
鲍勃 | 2021-02-04 | |
苏珊 | 2021-02-16 | |
麦克风 | 2021-03-02 |
会产生这样的结果:
姓名 | 售出日期 | 更多列... |
---|---|---|
鲍勃 | 2021-02-04 | |
苏珊 | 2021-02-16 | |
麦克风 | 2021-03-02 |
它有点像 a GROUP BY
,但我没有汇总任何内容。我只想过滤原始行。
我怎么能写这样的查询?
注意:最后,这将是一个 SQL Server 查询,但我需要使用实体框架编写它。
更新:实际上,这是一个更复杂的查询的一部分。将其作为原始 SQL 查询来实现对我来说非常困难。如果可能的话,我需要使用实体框架来实现。
解决方案
两种选择
Select top 1 with ties *
From YourTable
Order by row_number() over (partition by Name order by Sold_Date desc)
或性能稍高一些
with cte as (
Select *
,RN = row_number() over (partition by Name order by Sold_Date desc)
From YourTable
)
Select *
From cte
Where RN=1
推荐阅读
- android - 我的 android 应用已被暂停并从 Google Play 中删除,因为它违反了我们的设备和网络滥用政策以及第 4.9 节
- python - 如何按特定项目剪切列表?
- javascript - 使用 Javascript+PHP 将 Canvas 图像保存到服务器
- c# - Excel C# AddIn 在尝试获取单元格内的值时返回错误?
- mysql - 创建表上的mysql datetime datetime问题
- c - 嵌入式系统中的内存分配
- angular - 无法在 Angular 版本 7 中使用 CSS 类绑定
- python - python文件逐行读取并检查条件,如果它不是真的等到它为真而不跳过该行
- excel - 将字符串分配给 Range.value
- css - 如何将字体大小设置为精确的物理大小?