从一系列值中提取最新值

时间:2015-11-09 19:31:58

标签: sql subquery

我试图从字段CDT.Value中仅获取最近添加的值。目前,Value = CDT.Value不起作用,因为它试图返回多个值。 MAX(CDT.Value)返回为每个字段组合添加的最高数字。 COUNT(CDT.Value)返回为该值输入的不同数字的总数。

我想获得最近输入的值。 RPS.EffectiveStartDate表示最近输入的日期/时间。基本上:MAX的CDT.Value(RPS.EffectiveStartDate)。

有许多类似的问题得到了解答,其中大多数都在子查询中实现了SELECT,但是在尝试实现它们时,我无法获得任何有用的东西。

我认为子查询的SELECT需要在INNER JOIN vw_CurveDetail语句之后,但不完全清楚它应该如何完成。

How to find the record in a table that contains the maximum value?

SQL select max(date) and corresponding value

how do I query sql for a latest record date for each user

这是我正在处理的查询的片段:它非常冗长,所以我不想包含整件事

SELECT      RPS.MarketIdentifier
,           RPS.Jurisdiction
,           RPS.CurveType
,           RPS.RECType
,           MAX(RPS.EffectiveStartDate) EffectiveStartDate
,           CDT.ApplicationStartDate
,           Value = MAX(CDT.Value)
,           Year = CDT.Year
FROM        #RPSCurve                   RPS
INNER JOIN  vw_CurveDetail CDT ON   CDT.CurveIdentifier = RPS.CurveIdentifier
                                        AND CDT.EffectiveStartDate = RPS.EffectiveStartDate
INNER JOIN  #PlanningYearStartMonth     PYS ON  PYS.Jurisdiction = RPS.Jurisdiction

2 个答案:

答案 0 :(得分:0)

您可以在查询结尾处添加此内容

order by RPS.EffectiveStartDate desc

答案 1 :(得分:0)

为了只返回与最新EffectiveStartDate相关的一行数据,您可以使用ORDER BY添加TOP 1语句,如下所示:

SELECT TOP 1      
            RPS.MarketIdentifier
,           RPS.Jurisdiction
,           RPS.CurveType
,           RPS.RECType
,           RPS.EffectiveStartDate
,           CDT.ApplicationStartDate
,           CDT.Value
,           CDT.Year
FROM        #RPSCurve RPS
INNER JOIN  vw_CurveDetail CDT ON CDT.CurveIdentifier = RPS.CurveIdentifier
                               AND CDT.EffectiveStartDate = RPS.EffectiveStartDate
INNER JOIN  #PlanningYearStartMonth PYS ON PYS.Jurisdiction = RPS.Jurisdiction
ORDER BY RPS.EffectiveStartDate DESC