我有以下问题。我有一个带有两个表的SQL Server数据库。
第一个表包含PositionName
,date
和AnimalName
列,第二个表包含Weight
,date
和AnimalName
<列/ p>
现在因为动物四处移动而我需要评估这些数据行,我将每个新位置或每个新重量存储为新行。
但现在我想得到动物的当前位置和它已经获得的当前体重。我怎么处理这个?
示例数据
表位
A, 23.02.2015, ABC
B, 28.02.2015, ABC
表重量
A, 3.09, 22.02.2015, ABC
B, 2.3, 23.03.2015, ABC
我想要的是这个
表WeightPosition
Name Weight Position
ABC 2.3 B
答案 0 :(得分:1)
尝试:
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)
(根据需要更改字段名称)
答案 1 :(得分:0)
试试这个:
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