Непосредственная проблема в том, что вы задали select
на выходные строки каждой из которых содержит значение для sellerId
, Country
и три значения для ItemID
.
Подзапрос также не коррелирует с внешним запросом, то есть у вас есть вторая ссылка на таблицу Sellers
, но ничего не сделали, чтобы сопоставить значения с внешним запросом.
Предполагая, что вы на самом деле хотите, верхние 3 пунктов для каждого до 10 стран, то это должно быть близко:
работа
-- Sample data.
declare @Sellers as Table (SellerId Int, Country VarChar(16));
insert into @Sellers (SellerId, Country) values
(1, 'Canada'), (2, 'Italy'), (3, 'Elbonia'), (4, 'Maldives'), (5, 'Fiji'),
(6, 'Ecuador'), (7, 'Chile'), (8, 'Mexico'), (9, 'Palau'), (10, 'Yap'),
(11, 'Saba');
declare @Items as Table (ItemId Int, UserId Int, CreatedDate Date);
insert into @Items (ItemId, UserId, CreatedDate) values
(1, 3, '20150308'), (2, 3, '20150619'), (3, 3, '20120908'), (4, 3, '20140228'),
(2, 9, '20150308'), (3, 9, '20150619'), (4, 9, '20120908'), (5, 9, '20140228'),
(3, 6, '20150308'), (4, 6, '20150619'), (4, 6, '20120908'), (6, 6, '20140228');
select * from @Sellers;
select * from @Items;
-- Show the intermediate results.
with AllSellersAndItems as
(select S.SellerId, S.Country, I.ItemId,
Row_Number() over (partition by S.SellerId order by I.CreatedDate) as ItemSequence,
Dense_Rank() over (order by Country) as SellerSequence
from @Sellers as S inner join
@Items as I on I.UserId = S.SellerId)
select * from AllSellersAndItems;
-- The real query.
with AllSellersAndItems as
(select S.SellerId, S.Country, I.ItemId,
Row_Number() over (partition by S.SellerId order by I.CreatedDate) as ItemSequence,
Dense_Rank() over (order by Country) as SellerSequence
from @Sellers as S inner join
@Items as I on I.UserId = S.SellerId)
select SellerId, Country, ItemId, SellerSequence, ItemSequence
from AllSellersAndItems
where SellerSequence <= 10 and ItemSequence <= 3
order by Country desc
'Не уверен, что действительно возвращает то, что я ищу' - нет, это не так. См. Http://dba.stackexchange.com/q/86415/5203 – GSerg