Sql server 如果有,我如何获得第二次最多约会

Sql server 如果有,我如何获得第二次最多约会,sql-server,Sql Server,如果输入的日期为今天,我将如何获得第二个最大日期?注意:我总是需要选择昨天的日期 Select * From MyList Where Date = (Select Max(Date) 一种方法是: Select * From MyList Where Date = (Select top 1 Date from MyList where Date < (select Max(Date) from MyList) order by Date DESC) 这大致可以翻译为:从列表中选

如果输入的日期为今天,我将如何获得第二个最大日期?注意:我总是需要选择昨天的日期

Select * 
From MyList
Where Date = (Select Max(Date)
一种方法是:

Select * 
From MyList
Where Date = (Select top 1 Date from MyList where Date < (select Max(Date) from MyList) order by Date DESC)
这大致可以翻译为:从列表中选择日期等于日期小于最大日期的所有内容

根据ramon发表的评论,我认为这是他需要的:

    SELECT TOP 1  [date] FROM (
    SELECT MAX(DATE) [date]
    FROM MyList
    WHERE [DATE] <
    (
        SELECT MAX(DATE) FROM MyList
    )
    AND EXISTS
    (
        SELECT 1 FROM MyList WHERE [DATE] = CAST(GETDATE() AS DATE)
    )
    UNION
    SELECT MAX(DATE)
    FROM MyList
    WHERE NOT EXISTS
    (
        SELECT 1 FROM MyList WHERE [DATE] = CAST(GETDATE() AS DATE)
    )) x ORDER BY [x].[date] desc
一切都在一起:

SELECT * from MyList where [Date] = (
    SELECT TOP 1  [date] FROM (
    SELECT MAX(DATE) [date]
    FROM MyList
    WHERE [DATE] <
    (
        SELECT MAX(DATE) FROM MyList
    )
    AND EXISTS
    (
        SELECT 1 FROM MyList WHERE [DATE] = CAST(GETDATE() AS DATE)
    )
    UNION
    SELECT MAX(DATE)
    FROM MyList
    WHERE NOT EXISTS
    (
        SELECT 1 FROM MyList WHERE [DATE] = CAST(GETDATE() AS DATE)
    )) x ORDER BY [x].[date] desc)

如果有今天日期的数据,联合的第一部分将选择第二个maxdate。如果今天没有数据,联盟的第二部分将选择maxdate。

示例数据将极大地帮助其他读者理解您的问题。您好,欢迎来到SO。在这里没有人能真正帮助你,因为我们不知道你在用模糊的描述做什么。A会有很大帮助的。我真的不明白你在问什么。如果是今天,你想要第二个最长日期,但日期应该总是昨天?日期怎么可能是今天和昨天?很抱歉我的列表中出现了混乱,我正在尝试获取第二个最大日期列,例如Name date Maria 2/2/2020 John 2/2/2020 JM 2/2/2020 Ryan 2/14/2020 JR 2/15/2020 Jun 2/17/2020这是否考虑到我总是需要选择昨天的日期?它考虑到你需要选择第二大日期。我的问题是:是否需要同时选择昨天日期的数据和第二个最长日期的数据?您的问题不是很清楚,因此我的回答只涉及选择第二大日期的数据。@icarus如果今天输入了日期,我想要下一个最大日期,如果今天没有输入日期,那么我想要昨天的日期我想我们需要使用如果最大日期i=今天的日期,那么我想要下一个最大日期,否则我想要最大日期