分组依据 - 如何检索相关字段?

Mar*_*arc 1 sql t-sql sql-server greatest-n-per-group

下面的SELECT语句的预期结果:

('2015-01-15',110,'John')
Run Code Online (Sandbox Code Playgroud)

下面有一些代码可以帮助我...

 DECLARE @MyTableVar table(
arrival_date date,
nb_sales int,
name varchar(255)
)

insert into @MyTableVar values
('2015-01-15',121,'James'),
('2015-01-15',110,'John')

select 
arrival_date,
MIN(nb_sales) as nb_sales,
name <<-- What should I put knowing I can't put MIN or MAX ?
from @MyTableVar
group by arrival_date
Run Code Online (Sandbox Code Playgroud)

Luk*_*zda 6

你可以使用窗口函数:

;WITH cte AS
(
  SELECT *, r = ROW_NUMBER() OVER(PARTITION BY arrival_date ORDER BY nb_sales)
  FROM @MyTableVar
)
SELECT arrival_date, nb_sales, name
FROM cte
WHERE r = 1;
Run Code Online (Sandbox Code Playgroud)

LiveDemo

如果关系是可能的,你想要他们两个使用RANK()而不是ROW_NUMBER()