我有一个项目要求我将SQL Server数据库中的医疗程序与相应的结果相匹配。 EX:过程备注包含screening
,结果备注出现在包含abnormal
的该过程的一周内。
问题是程序说明和结果都作为同一个表中的文本进入数据库,它们唯一的链接信息是患者ID。我需要得到每个匹配程序/结果的患者ID和日期列表。
我考虑过首先将所有文本匹配程序和文本匹配结果分类,然后将临时表分开,然后以某种方式加入它们,但我不确定如何在“彼此在一周内”分组并丢弃离开了。
任何提示?任何有助于从这里回答的信息?
请求其他信息:
基本上我有这个:
PatientID ReportType ReportDate ReportText
24734 Procedure 1/1/1901 Lots O HTML
24734 Report 1/2/1901 Lots O HTML
...
此表是已经过滤了ReportText列中“筛选”和“异常”字样的结果。因此,鉴于上述两个结果,我们可以看到患者ID匹配,并且每个报告类型中的一个在一周内彼此匹配,因此它们应该匹配并列为一个行项目。
答案 0 :(得分:1)
您可以执行以下操作
select *
from tableA a1
inner join tableA a2
on a1.patientid = a2.patientid
and a2.textvaluecolumn = 'abnormal'
where a1.textvaluecolumn = 'screening'
and datediff(wk, a1.date, a2.date) = 1
所以你在patientid上加入了同一个表,左表有筛选部分,右表有异常部分。稍后,您将获得一些日期,您可以使用datediff函数相互减去日期,该函数返回开始和结束之间的周(wk)差异。 您也可以使用天数(d):)
答案 1 :(得分:0)
当数据如下时会发生什么:
patientID text date
1 procedure1 1/1/12
1 procedure2 1/2/12
2 procedure1 1/5/12
2 result1 1/12/12
1 result2 1/8/12
1 result1 1/9/12
你怎么知道结果文本实际上与程序相符?