我想使用acct.processdate每月获取最新条目。我已经尝试过使用MAX()函数,但是由于使用了group by,所以它没有帮助。我该怎么做?
DECLARE @StartDate AS INT
, @EndDate AS int
SET @StartDate = '20190131'
SET @EndDate = '20191130'
SELECT count(*) as [Account Count]
, datename(MONTH, CAST(CAST(ProcessDate AS VARCHAR(10)) AS SMALLDATETIME)) AS [Month Name]
, (CAST(CAST(acct.ProcessDate AS VARCHAR(10)) AS SMALLDATETIME)) AS [Process Date]
from ARCUSYM000.dbo.ACCOUNT acct
where acct.CLOSEDATE is null AND
(acct.ProcessDate >= @StartDate
AND acct.ProcessDate <= @EndDate)
GROUP BY acct.ProcessDate
ORDER BY (CAST(CAST(acct.ProcessDate AS VARCHAR(10)) AS SMALLDATETIME)) desc
这是我当前的结果:
这是我想要的结果:
CTE的新结果:
您可以将结果放入cte中并使用不存在的功能
DECLARE @StartDate AS INT
, @EndDate AS int
SET @StartDate = '20190131'
SET @EndDate = '20191130'
;with cte as
(
SELECT count(*) as [Account Count]
, datename(MONTH, CAST(CAST(ProcessDate AS VARCHAR(10)) AS SMALLDATETIME)) AS [Month Name]
, (CAST(CAST(acct.ProcessDate AS VARCHAR(10)) AS SMALLDATETIME)) AS [Process Date]
from ARCUSYM000.dbo.ACCOUNT acct
where acct.CLOSEDATE is null AND
(acct.ProcessDate >= @StartDate
AND acct.ProcessDate <= @EndDate)
GROUP BY acct.ProcessDate
)
select * from cte a
where not exists(select 1 from cte b where a.[Account Count] = b.[Account Count] and
a.[Process Date] < b.[Process Date] )