0

我有一个项目要求我将 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 匹配,并且每个报告类型在一周内都有一个,因此它们应该是匹配的并列为一个行项目。

4

2 回答 2

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) :)

于 2012-08-03T09:52:42.220 回答
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

你怎么知道结果文本实际上与程序匹配?

于 2012-08-02T21:38:39.493 回答