以下SELECT语句的预期结果:
('2015-01-15',110,'John')
下面有一些代码可以帮助我...
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
答案 0 :(得分: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;
的 LiveDemo
强>
如果可以联系,并且您希望他们都使用RANK()
代替ROW_NUMBER()
答案 1 :(得分:0)
您可以将该组加入原始数据集,并从连接创建的结果集中获取名称:
select x2.*
from (
select
arrival_date,
MIN(nb_sales) nb_sales
from @MyTableVar
group by arrival_date) x1
inner join @MyTableVar x2 on
x1.arrival_date = x2.arrival_date and
x1.nb_sales = x2.nb_sales