Rae*_*dur 6 sql t-sql sql-server
表结构是:
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,
)
Run Code Online (Sandbox Code Playgroud)
每个水果都可以分配给多个客户,创建一个fruit_allocation记录.每个fruit_allocation记录可以有多个度量.
我想为每个fruit_allocation选择最新的度量给出一个水果ID
到目前为止,我有以下内容:
select *
from measurement
where fruit_allocation_id in (select id
from fruit_allocation
where fruit_id = 10)
Run Code Online (Sandbox Code Playgroud)
这将返回该水果的所有测量值,我想每个fruit_allocation返回1个测量值.
你可以交叉申请
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
Run Code Online (Sandbox Code Playgroud)