按类似日期对SQL Server结果进行分组

时间:2012-08-02 21:23:49

标签: sql sql-server-2008-r2

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

2 个答案:

答案 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

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