SQL:Select 一组联合表中的最后 5 个实例

SQL: Select last 5 instances from a union'd set of tables

我有 2 个独立的 table,每个都有以下列:

ActivityDate | Score | AccountID 

初始查询是一个简单的联合:

SELECT ActivityDate, Score, AccountID FROM Table1 WITH(NOLOCK)
UNION
SELECT ActivityDate, Score, AccountID FROM Table2 WITH(NOLOCK) 

我现在需要做的是使用这个数据集,select 最后 5 个实例(AccountID & ActivityDate)。问题是,这最终会出现在 Tableau 中,如果您尝试对 #Temp table 执行某种操作,Tableau 就不能很好地处理查询,所以一切都必须在查询中完成.

想法?

我正在使用 SQL Server 2008 R2。

select ActivityDate, Score, AccountID
from
(
select row_number() over(partition by accountid order by activitydate desc) as rn, 
* from
(
SELECT ActivityDate, Score, AccountID FROM Table1 WITH(NOLOCK)
UNION
SELECT ActivityDate, Score, AccountID FROM Table2 WITH(NOLOCK) 
) t
) t1
where rn <= 5

您可以使用 row_number 函数对行进行编号,然后 select 每个帐户 ID 的前 5 个。

SELECT TOP(5) 
FROM 
     (SELECT ActivityDate, Score, AccountID FROM Table1 WITH(NOLOCK)
      UNION
      SELECT ActivityDate, Score, AccountID FROM Table2 WITH(NOLOCK)) Test
ORDER BY 
    AccountID, ActivityDate DESC