在SQL中根据最大日期查找结果

时间:2019-06-17 22:09:10

标签: tsql

我正在尝试获取最大日期的结果,并在现有的表格结构中将日期分为三列(天,月和年)。我正在寻找解决此问题的最佳方法,因为底部的sql可以工作,但是我不确定是否应该编写这样的语句?

myLiveData.value

但是,上面的语句还带来了一些不是最大的记录。 现在,我有另一种方法可以执行此操作,但是它不确定是否是下面的最佳方法:

Table Structure "blah"

    ID GUID,
    Description varchar(max),
    Column - Day (Stores Day of the Month),
    Column - Month (Stores Month of the Year),
    Column - Year (Stores Year)

    SELECT Count(ID), Description, MAX(CONVERT(DATE,CAST([Year] AS VARCHAR(4))+'-'+
                        CAST([Month] AS VARCHAR(2))+'-'+
                        CAST([Day] AS VARCHAR(2))))
    From blah
    Group by Description

1 个答案:

答案 0 :(得分:1)

不确定您是否很清楚地理解了这个问题,因为您的解释和您尝试的代码说的是不同的话

如果您仅查找一行,即与最大日期相对应的行,则可以这样写:

SELECT   * 
FROM     blah
WHERE    DATEFROMPARTS (Year, Month, Day) = (SELECT MAX(DATEFROMPARTS (Year, Month, Day)) FROM blah);

如果每个描述都需要相同的内容,则:

;WITH CTE AS 
(
    SELECT   Description, MaxDate = MAX(DATEFROMPARTS (Year, Month, Day))
    FROM     blah
    GROUP    BY Description
)
SELECT  *
FROM    blah B
        INNER JOIN CTE 
           ON B.Description = CTE.Description 
           AND DATEFROMPARTS (B.Year, B.Month, B.Day) = CTE.MaxDate;