У меня есть таблица счетов-фактур и дочерняя таблица связанных данных, связанных с ключом. В частности, для каждого счета-фактуры меня интересует только первая связанная строка из дочерней таблицы. Учитывая, что мне нужна одна соответствующая строка для каждого ключа счета - как это сделать?
Select i.[Invoice Number],
c.[Carrier Name]
From Invoice i
Left Join Carriers c on i.[InvoiceKey] = c.[InvoiceKey]
Where -- what?
Я думаю, семантически говоря, что я ищу что-то похожее на концепцию Top 1 c.CarrierName Group by InvoiceKey
(или что было бы понятием этого, если бы это было возможно в T-SQL.)
Я думал о том, чтобы сделать левое соединение в подзапросе, но это не кажется очень эффективным. У кого-нибудь есть трюки T-SQL для достижения этой эффективности?
Изменить. Извините, ребята, я забыл упомянуть, что это SQL Server 2000, поэтому, пока я собираюсь дать ответы на текущие ответы SQL Server 2005/2008, которые будут работать, Я принимаю их, я боюсь.