将Access select multiple Last()转换为SQL
我的MS Access语法如下所示: 我需要将其转换为SQL server语法将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
我知道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-您应该创建一个单独的问题。