Tsql 如何从具有自内联接的表中获取最新值
请看 我有两个表,Person和Values,PersonID是它们之间的链接。“值”表中的每个人每天每小时都有多个值。我需要获得每个用户的最新值。我看了一下SO,我能找到的是得到MAX(ValueDate),然后加入,但不起作用。加入PersonID也不起作用,不知道还能尝试什么 我需要的输出是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 我不需要最大的价值,我需要每个人的最新价值。如果你有任何想法,请分享
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 |