我试图从字段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
答案 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