我正在尝试获取最大日期的结果,并在现有的表格结构中将日期分为三列(天,月和年)。我正在寻找解决此问题的最佳方法,因为底部的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
答案 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;