SQL avec la position et le poids les plus courants

J'ai le problème suivant. J'ai une database SQL Server avec deux tables.

La première table contient les colonnes PositionName , date et AnimalName , et la deuxième table contient les colonnes Weight , date et AnimalName

Maintenant, parce qu'un animal se déplace et que j'ai besoin d'évaluer ces rangées de données, je stocke chaque nouvelle position ou chaque nouveau poids comme une nouvelle rangée.

Mais maintenant je veux connaître la position actuelle de l'animal et son poids actuel. comment puis-je gérer cela?

Exemple de données

Position de la table

 A, 23.02.2015, ABC B, 28.02.2015, ABC 

Poids de la table

 A, 3.09, 22.02.2015, ABC B, 2.3, 23.03.2015, ABC 

Ce que je veux c'est ça

Table WeightPosition

 Name Weight Position ABC 2.3 B 

Essayer:

 select p.animalname, w.weight, p.positionname from position p join weight w on p.animalname = w.animalname where p.dt = (select max(x.dt) from position x where x.animalname = p.animalname) and w.dt = (select max(x.dt) from weight x where x.animalname = w.animalname) 

(changez les noms des champs si nécessaire)

Test de violon: http://sqlfiddle.com/#!6/31358/1/0

Essaye ça:

 SELECT an.AnimalName, w.Weight, p.Position FROM (SELECT AnimalName FROM Positions UNION SELECT AnimalName FROM Weights) an OUTER APPLY(SELECT TOP 1 Weight FROM Weights where AnimalName = an.AnimalName ORDER BY Date desc) w OUTER APPLY(SELECT TOP 1 Position FROM Positions where AnimalName = an.AnimalName ORDER BY Date desc) p