0

我的数据库包含交易日期和到期日期。我想获得给定日期的第 N 个下一个到期日期。此查询工作正常:

SELECT MAX(Expiry)
FROM   (SELECT TOP(@N) Expiry
        FROM   (SELECT DISTINCT Expiry
                FROM MTM
                WHERE TradeDate = @Date
                  and Code = @Code
                  and Class = 'blablablabla') as D
        ORDER BY Expiry) as T

但是我可以在不使用三重嵌套的情况下做到这一点吗?基本上我需要使用MAX,TOPDISTINCT. 有没有更好的办法?

4

1 回答 1

1

两个内部可以组合成SELECT DISTINCT TOP

SELECT MAX(Expiry)
FROM   (SELECT DISTINCT TOP(@N) Expiry
        FROM MTM
        WHERE TradeDate = @Date
          and Code = @Code
          and Class = 'blablablabla'
        ORDER BY Expiry) as T

但是,不会有性能提升(查询计划将相同)。

于 2013-07-10T14:27:42.967 回答