Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得具有最新日期+时间的单个SQL行,而不考虑具有不同数据的无关列?_Sql - Fatal编程技术网

如何获得具有最新日期+时间的单个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

在我的SQL查询中,我试图从数据库中获取数据,该数据库具有每个项目编号的最新日期和时间组合

我的公式是:

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的相关答案