如何获得具有最新日期+时间的单个SQL行,而不考虑具有不同数据的无关列?
在我的SQL查询中,我试图从数据库中获取数据,该数据库具有每个项目编号的最新日期和时间组合 我的公式是:如何获得具有最新日期+时间的单个SQL行,而不考虑具有不同数据的无关列?,sql,Sql,在我的SQL查询中,我试图从数据库中获取数据,该数据库具有每个项目编号的最新日期和时间组合 我的公式是: select [Project], [Machine], [Category], [Details], MAX(date + ' ' + time) as [DateTime] from [SQL].[dbo].[ZMAC] group by [Project No], [Machine], [Repair Category], [Details] 这是搜索结果的一部分 | Proje
select [Project], [Machine], [Category], [Details], MAX(date + ' ' + time) as [DateTime]
from [SQL].[dbo].[ZMAC] group by [Project No], [Machine], [Repair Category], [Details]
这是搜索结果的一部分
| Project | Machine | Category | Details | DateTime |
------------------------------------------------------------------------
| M00004 | A09 | QC | CENTER OVER | 2020-01-21 19:15:00.000 |
| M00004 | A09 | QC | FIRST CUT | 2020-01-21 19:00:00.000 |
| M00006 | C03 | QC | PUSHER UP | 2020-01-21 17:30:00.000 |
查询最后给了我两行M00004,因为细节不同。我真正想要的是表为每个项目返回1行
| Project | Machine | Category | Details | DateTime |
------------------------------------------------------------------------
| M00004 | A09 | QC | CENTER OVER | 2020-01-21 19:15:00.000 |
| M00006 | C03 | QC | PUSHER UP | 2020-01-21 17:30:00.000 |
如何告诉公式仅显示最新条目?在不存在的地方使用
select [Project], [Machine], [Category], [Details], [DateTime]
from [SQL].[dbo].[ZMAC] a
where not exists(
select 1
from [SQL].[dbo].[ZMAC] b where a.Machine = b.Machine and a.[DateTime] < b.[DateTime]
)
您可以使用ROW_NUMBER根据Datetime降序为每个项目生成值的有序列表,然后仅选择ROW NUMBER=1的行:
WITH CTE AS (
SELECT [Project], [Machine], [Category],
[Details], date + ' ' + time as [DateTime]
ROW_NUMBER() OVER (PARTITION BY [Project] ORDER BY (date + ' ' + time) DESC) AS rn
FROM [SQL].[dbo].[ZMAC]
)
SELECT [Project], [Machine], [Category], [Details], [DateTime]
FROM CTE
WHERE rn = 1
您可以通过以下链接找到MAXDATE的相关答案