Sql server 2008 使用“JOIN”从表中选择与表2中特定列匹配的前五条记录
我有两张桌子:Sql server 2008 使用“JOIN”从表中选择与表2中特定列匹配的前五条记录,sql-server-2008,Sql Server 2008,我有两张桌子: Audit AUDITID | CUSTOMER | CUSTOMERNUMBER 001 | BILLY | 11111 002 | HOLLY | 12222 003 | HOLLY | 12222 004 | DON | 13333 005 | DON | 13333 Summary AuditID | Summary | Date 001 | 1
Audit
AUDITID | CUSTOMER | CUSTOMERNUMBER
001 | BILLY | 11111
002 | HOLLY | 12222
003 | HOLLY | 12222
004 | DON | 13333
005 | DON | 13333
Summary
AuditID | Summary | Date
001 | 1 | 30/1/2012
001 | 2 | 1/10/2012
001 | 3 |20/10/2012
004 | 4 | 2/09/2012
004 | 5 | 3/01/2012
我想为每个与审计表中的审计ID匹配的不同审计选择前五名记录表
到目前为止,我使用的sql脚本是:
SELECT Auditid, summary, date
FROM [Summary] SL1
INNER JOIN [Audit] AL1 ON SL1.[AuditID] = AL1.[AuditID]
WHERE AL1.[AuditID] IN (
SELECT TOP 5 AuditID
FROM [Audit] AL2
WHERE AL1.[CustomerNumber] = AL2.[CustomerNumber]
ORDER BY AL2.[AuditID] DESC
)
您可以通过以下方式与分区一起使用:
这将返回按日期排序的每个试听的前5条记录,最早的优先,否则使用DESC。您必须指定要从摘要中获取前5条记录的顺序-我选择按摘要进行,您可以按日期或其他方式进行。我还做了top2,以使用您的示例数据显示结果
select audit.auditid,Summary,DATE
from
Audit inner join Summary Sum_Tab1 on Audit.AUDITID=Sum_Tab1.AUDITID
where
Sum_Tab1.SUMMARY in
(SELECT top 2 SUMMARY from Summary Sum_Tab2
where Sum_Tab1.AUDITID=Sum_Tab2.AUDITID order by summary)
select audit.auditid,Summary,DATE
from
Audit inner join Summary Sum_Tab1 on Audit.AUDITID=Sum_Tab1.AUDITID
where
Sum_Tab1.SUMMARY in
(SELECT top 2 SUMMARY from Summary Sum_Tab2
where Sum_Tab1.AUDITID=Sum_Tab2.AUDITID order by summary)