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
我有 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