Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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
Sql 是否从多条件事例表达式中提取最新记录?_Sql_Sql Server_Max_Sql Order By_Case - Fatal编程技术网

Sql 是否从多条件事例表达式中提取最新记录?

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

我要处理的情况是,我只需要根据一个特定的诊断为一个患者提取一个记录。在这种情况下,患者可以有多个诊断,这些诊断被列为当前icd10列表,每个诊断都是在一次就诊中完成的,可以通过联系日期来识别。在这种情况下,患者可以在不同的时间被诊断为多个类似类型的诊断,但我只需要提取最新的诊断。在我的例子中,假设我有一位患者首先被诊断患有
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的患者,并使用行编号按联系日期进行排序,从而解决了这个问题。然后我将其合并回其余的数据

请提供一些样本数据和期望的结果。