表结构是:
create table fruit (
id int identity(1,1),
name varchar(max)
)
create table fruit_allocation (
id int identity(1,1),
fruit_id int references fruit(id),
customer_id int references store(id),
amount float,
)
create table measurement (
fruit_allocation_id int references fruit_allocation(id),
measurement_date datetime,
measurement float,
)
每个水果可以分配给多个客户,创建一个 Fruit_allocation 记录。每个fruit_allocation 记录可以有多个度量。
我想为每个给定水果 ID 的水果分配选择最新的测量值
到目前为止,我有以下几点:
select *
from measurement
where fruit_allocation_id in (select id
from fruit_allocation
where fruit_id = 10)
这将返回该水果的所有测量值,我只想为每个水果分配返回 1 个测量值。
最佳答案
您可以 CROSS APPLY
select a.*, m.*
from fruit_allocation a
cross apply (
select top 1 *
from measurement m
where m.fruit_allocation_id = a.id
order by m.measurement_date desc
) m
where a.fruit_id = 10
关于sql - 为另一个表中的每个 ID 从表中选择前 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5073089/