SQL查询,返回Max(DateField)的价格

标签 sql t-sql

我有这个sql表:

Niin char(9)
EffectiveDate Date
Price  currency

NIIN 会重复使用不同的有效日期和价格值,如下所示

**NIIN           EffectiveDate       Price**

012345678        6/1/2011              89.00
012345678        6/1/2012              99.00
012345678        6/1/2012              99.00
123456789        5/1/2011              77.00
123456789        5/1/2012              80.00
123456789        5/1/2012              80.00
etc....

我需要做的是返回 NIIN,以及最大有效日期的价格,假设如果存在重复的有效日期值,则价格将始终相同。

因此,从我提供的示例中,查询将返回:

012345678       99.00
123456789       80.00

感谢您的帮助。

最佳答案

您可以使用 CTE 来实现此目的:

;with cte as
(
  select niin,
    row_number() over(partition by niin order by effectivedate desc) rn,
    price
  from yourtable
)
select niin, price
from cte
where rn = 1

参见SQL Fiddle with Demo

关于SQL查询,返回Max(DateField)的价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12415385/

相关文章:

sql - 如何选择和排序不在 Group By SQL 语句中的列 - Oracle

mysql - 如何从 SQL 查询的单个日期列获取开始/结束日期

mysql - 长多对多数据库表 : best performance practice

mysql - SQL:将两个结果行合并为一个

MySqlDataAdapter SQL 语法用法

sql - 使用 windows 函数减去两列

sql - 子查询内的 SELECT INTO

sql - Azure SQL Server "clr strict security"可以更改吗

sql-server-2008 - 逗号分隔结果集 + SQL 查询

sql - 检查生成脚本中的约束