Sql 是否从多条件事例表达式中提取最新记录?
我要处理的情况是,我只需要根据一个特定的诊断为一个患者提取一个记录。在这种情况下,患者可以有多个诊断,这些诊断被列为当前icd10列表,每个诊断都是在一次就诊中完成的,可以通过联系日期来识别。在这种情况下,患者可以在不同的时间被诊断为多个类似类型的诊断,但我只需要提取最新的诊断。在我的例子中,假设我有一位患者首先被诊断患有Sql 是否从多条件事例表达式中提取最新记录?,sql,sql-server,max,sql-order-by,case,Sql,Sql Server,Max,Sql Order By,Case,我要处理的情况是,我只需要根据一个特定的诊断为一个患者提取一个记录。在这种情况下,患者可以有多个诊断,这些诊断被列为当前icd10列表,每个诊断都是在一次就诊中完成的,可以通过联系日期来识别。在这种情况下,患者可以在不同的时间被诊断为多个类似类型的诊断,但我只需要提取最新的诊断。在我的例子中,假设我有一位患者首先被诊断患有Dx 1,然后在晚些时候被诊断为Dx 2。我只想提取最新的诊断结果,即Dx 2。我该怎么做 select CONTACT_DATE, WHEN
Dx 1
,然后在晚些时候被诊断为Dx 2。我只想提取最新的诊断结果,即Dx 2
。我该怎么做
select
CONTACT_DATE,
WHEN current_icd10_list LIKE '%E10.0%'
...
OR current_icd10_list LIKE '%E14.9%'
THEN 'Dx 1'
WHEN current_icd10_list LIKE '%E10.2%'
...
OR current_icd10_list LIKE '%E14.7%'
THEN 'Dx 2'
END AS 'Dx Group'
我只需要根据一个特定诊断为一个患者提取一个记录[…]一个患者可以有多个诊断[…],但我只需要提取最新的一个
您可以使用行编号()。假设患者id存储在列患者id
中,就诊日期存储在联系人日期
中:
select *
from (
select
t.*,
row_number() over(partition by patient_id order by contact_date desc) rn
from mytable t
) x
where rn = 1
您不能使用当前icd10列表的条件,使用max date函数进行拉取吗?例如:
select max(CONTACT_DATE) as max_date,
case WHEN current_icd10_list LIKE '%E10.0%'
OR current_icd10_list LIKE '%E14.9%'
THEN 'Dx 1'
WHEN current_icd10_list LIKE '%E10.2%'
OR current_icd10_list LIKE '%E14.7%'
THEN 'Dx 2'
END AS 'Dx Group'
from mytable
group by
case WHEN current_icd10_list LIKE '%E10.0%'
OR current_icd10_list LIKE '%E14.9%'
THEN 'Dx 1'
WHEN current_icd10_list LIKE '%E10.2%'
OR current_icd10_list LIKE '%E14.7%'
THEN 'Dx 2'
END
;
因此,我通过在“Dx组”中分离具有Dx的患者,并使用行编号按联系日期进行排序,从而解决了这个问题。然后我将其合并回其余的数据 请提供一些样本数据和期望的结果。