我正在寻找一些SQL帮助,因为我对它有些新意。我有80%的等式,但我错过了最后二十个。
我正在尝试使用N变量执行MAX
语句。我每周都会将一个文件加载到服务器,并且该文件有一个' etl date'。我想说'根据日期'向我展示最近的3个文件。我想出了如何在这个论坛上获得最近的两个
SELECT COUNT (ref_date)
FROM [STORAGE_DW].[dbo].[SRM_VirtualMachines]
WHERE ref_date = (SELECT MAX(ref_date)
FROM [STORAGE_DW].[dbo].[SRM_VirtualMachines])
SELECT COUNT (ref_date)
FROM [STORAGE_DW].[dbo].[SRM_VirtualMachines]
WHERE ref_date = (SELECT MAX(ref_date)
FROM [STORAGE_DW].[dbo].[SRM_VirtualMachines]
WHERE Ref_Date < (SELECT MAX(ref_date)
FROM STORAGE_DW.dbo.SRM_VirtualMachines))
我不确定上述内容是否有效但是有效。我基本上想说给我看一下最近的文件日期(MAX),然后是两个以前的MAX-2。
日期格式如下:
2017-01-30 07:03:00.000
答案 0 :(得分:1)
通过查看您的问题,我假设您使用的是SQL Server。您可以使用RANK Analytic函数从表中获取所有最新三个参考日期的计数。检查解决方案如下。
SELECT COUNT( Z.ref_date )
FROM
(
SELECT *,
RANK() OVER( ORDER BY ref_date DESC ) AS rnk
FROM [STORAGE_DW].[dbo].[SRM_VirtualMachines]
) Z
WHERE Z.rnk <=3;