我正在尝试搜索最近发生的一堆交易,但只希望每笔交易返回一次。我对代码概率的尝试比我能更好地解释它。

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

08-16 18:24