Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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/7/sql-server/23.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
将Access select multiple Last()转换为SQL_Sql_Sql Server_Ms Access - Fatal编程技术网

将Access select multiple Last()转换为SQL

将Access select multiple Last()转换为SQL,sql,sql-server,ms-access,Sql,Sql Server,Ms Access,我的MS Access语法如下所示: 我需要将其转换为SQL server语法 我知道Last的含义,但我不知道如何使用SQL server中的单个group by使这个多个Last工作。通过查看您的查询,您的表中可能有多个记录具有相同的patientid和dateallocated;但你只希望其中一个被退回。 你写道: patandmaxdate.maxdate = psapure.datecollected and patandmaxdate.patientid = psapure.pat

我的MS Access语法如下所示:

我需要将其转换为SQL server语法


我知道Last的含义,但我不知道如何使用SQL server中的单个group by使这个多个Last工作。

通过查看您的查询,您的表中可能有多个记录具有相同的patientid和dateallocated;但你只希望其中一个被退回。 你写道:

patandmaxdate.maxdate = psapure.datecollected 
and patandmaxdate.patientid = psapure.patientid
这将返回多条记录,要筛选您使用的记录,请选择“上一条…”分组方式。。。 我认为这可能会在这种情况下对您有所帮助:

select patientid,dateollected,psaid,psavalue
from
(select *,
 row_number() over(partition by patientid order by dateollected desc) as RowNumber
 from psapure) as t
where RowNumber = 1
样品

注意:它不包含psavalue和psaid的任何过滤条件,因此可能会因数据而异。要在这些上添加一些过滤器,您可以使用如下查询:

select patientid,dateollected,psaid,psavalue
from
(select *,
 row_number() over(partition by patientid order by dateollected desc,psavalue desc,psaid desc) as RowNumber
 from psapure) as t
where RowNumber = 1

sample

我想用MAX替换LAST就足够了,这个查询不仅可以在SQL Server中工作,还可以创建一个单独的question@tianxu0836-您应该创建一个单独的问题。