Tsql 如何从具有自内联接的表中获取最新值

Tsql 如何从具有自内联接的表中获取最新值,tsql,stored-procedures,join,Tsql,Stored Procedures,Join,请看 我有两个表,Person和Values,PersonID是它们之间的链接。“值”表中的每个人每天每小时都有多个值。我需要获得每个用户的最新值。我看了一下SO,我能找到的是得到MAX(ValueDate),然后加入,但不起作用。加入PersonID也不起作用,不知道还能尝试什么 我需要的输出是 Name Value 1fn 1ln 2 2fn 2ln 20 3fn 3ln 200 我不需要最大的价值,我需要每个人的最新价值。如果你有任何想法,请分享

请看

我有两个表,Person和Values,PersonID是它们之间的链接。“值”表中的每个人每天每小时都有多个值。我需要获得每个用户的最新值。我看了一下SO,我能找到的是得到MAX(ValueDate),然后加入,但不起作用。加入PersonID也不起作用,不知道还能尝试什么

我需要的输出是

Name       Value
1fn 1ln      2
2fn 2ln      20
3fn 3ln      200
我不需要最大的价值,我需要每个人的最新价值。如果你有任何想法,请分享。谢谢。

试试这个:

DECLARE @Org nvarchar(3)
SELECT @Org = 'aaa'

DECLARE @MyDate date
SELECT @MyDate = CONVERT(date, '2014-09-12')

SELECT a.Name,
       a.Value as Revenue
FROM(
SELECT p.FName + ' ' + p.LName AS Name,
vt.Value,
ROW_NUMBER()OVER(PARTITION BY vt.PersonID ORDER BY vt.ValueDate desc) as rnk
FROM Person p
LEFT JOIN ValueTable vt
  ON vt.PersonID = p.PersonID
WHERE vt.ValueDate < DATEADD(day,1,@MyDate)
AND vt.ValueDate >= @MyDate
AND vt.Org = @Org)a
WHERE a.rnk = 1
ORDER BY a.Name ASC
|    NAME | REVENUE |
|---------|---------|
| 1fn 1ln |       2 |
| 2fn 2ln |      20 |
| 3fn 3ln |     200 |