【发布时间】:2011-06-09 05:02:25
【问题描述】:
我有一个发票表和一个键相关的相关数据的子表。特别是,对于每张发票,我只对子表中的第一个相关行感兴趣。鉴于我希望每个发票键都有一个相关行 - 我该如何完成?
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 响应投赞成票,但我不能恐怕不接受他们。
【问题讨论】:
-
第二个表是否有任何属性说明哪一行是第一秒等。
-
@Cybernate 没有,除了索引的顺序
标签: sql-server tsql sql-server-2000