我有一个发票表和一个按键关联的相关数据的子表。特别是,对于每张发票,我只对子表中的第一个相关行感兴趣。鉴于我想要每个发票键都有一个相关行 - 我该如何实现这一点?
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 技巧可以有效地实现这一点吗?
Edit:抱歉,大家,我忘了提及这是 SQL Server 2000,所以虽然我要为当前有效的 SQL Server 2005/2008 响应投赞成票,但恐怕我无法接受它们。
前提是Carriers
has a PRIMARY KEY
called id
:
SELECT i.[Invoice Number],
c.[Carrier Name]
FROM Invoice i
JOIN Carriers c
ON c.id =
(
SELECT TOP 1 ID
FROM Carriers ci
WHERE ci.InvoiceKey = i.InvoiceKey
ORDER BY
id -- or whatever
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)