我正在尝试搜索最近发生的一堆交易,但只希望每笔交易返回一次。我对代码概率的尝试比我能更好地解释它。
SELECT
DISTINCT TransactionCode
, IdKey
FROM TransTable
WHERE TransactionCode IN (<massive list of ids...>)
AND ActionDate < GETDATE()
ORDER BY ActionDate DESC
我想要每个交易代码的一个实例,按日期(又称该交易的最近一次)排序,并且还返回idKey。有什么想法吗?
最佳答案
SELECT TransactionCode,
IdKey
FROM
(
SELECT TransactionCode,
IdKey,
ROW_NUMBER() OVER(PARTITION BY TransactionCode
ORDER BY ActionDate DESC) AS rn
FROM TransTable
WHERE TransactionCode in (1,2,3) AND
ActionDate < GETDATE()
) T
WHERE rn = 1