Mysql 在sql中选择一个属性的最大值小于另一个属性的记录
我有一个表,即MyTable,其属性如下: Id PK patientId int 日期时间 检查日期时间 血红蛋白水平浮动 每个体检日期都有一个独特的血红蛋白水平, 一名患者可以有多次输血日期和多次体检日期 这里的“检查日期”是指测量血红蛋白水平的日期 我需要检索记录,以便能够在输血日期之前获得特定患者的血红蛋白水平Mysql 在sql中选择一个属性的最大值小于另一个属性的记录,mysql,sql,sql-server,sql-server-2008,database-design,Mysql,Sql,Sql Server,Sql Server 2008,Database Design,我有一个表,即MyTable,其属性如下: Id PK patientId int 日期时间 检查日期时间 血红蛋白水平浮动 每个体检日期都有一个独特的血红蛋白水平, 一名患者可以有多次输血日期和多次体检日期 这里的“检查日期”是指测量血红蛋白水平的日期 我需要检索记录,以便能够在输血日期之前获得特定患者的血红蛋白水平 请帮助我完成我必须填写的查询。这将为您提供一个或多个myPatId记录,用于您指定的myTransfusionDate之前的检查日期 SELECT checkup_date, h
请帮助我完成我必须填写的查询。这将为您提供一个或多个myPatId记录,用于您指定的myTransfusionDate之前的检查日期
SELECT checkup_date, haemoglobin_level
FROM MyTable
WHERE patientId = myPatId AND
checkup_date = (
SELECT TOP 1 checkup_date
FROM MyTable
WHERE patientId = myPatId AND checkup_date < myTransfusionDate
ORDER BY checkup_date DESC
)
您可以发布您目前拥有的代码吗?您希望为单个查询提供单个输血日期,还是为每个有效输血日期提供记录?为每个有效输血日期提供记录。如果输血日期为空,则取最近的血红蛋白水平读数谢谢回复。在你的查询中,myPatId是什么?@Abhi你想为每个患者的每一次治疗记录吗?或者每个病人一份记录?每个病人每次输血的记录。我想要一个病人在输血前的血红蛋白水平,一个病人可以接受多次输血和多次血红蛋白测试。。
declare @PatientId int;
declare @MyTable table (
Id int primary key,
patientId int,
Transfusion_Date datetime,
checkup_date datetime,
haemoglobin_level float
);
select *
from @MyTable t
where t.patientId = @PatientId
and t.checkup_date <= t.Transfusion_Date
and not exists (
select 0 from @MyTable t2
where t2.patientId = t.patientId
and t2.checkup_date between t.checkup_date and t.Transfusion_Date
);