Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 使用“JOIN”从表中选择与表2中特定列匹配的前五条记录_Sql Server 2008 - Fatal编程技术网

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)