2012-08-02 42 views
0

我有一个项目,需要我匹配SQL Server数据库中的医疗过程和相应的结果。例如:程序说明包含screening,结果注释在该程序的一周内出现,其中包含abnormal按类似日期分组SQL Server结果

问题是程序笔记和结果都以相同表格中的文本进入数据库,他们唯一的链接信息是患者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

我很难遵循你想做的事情。如果你有任何代码你可以上传,以帮助澄清一些很好的混淆。 – GK1667 2012-08-02 21:26:43

+1

你能提供你正在使用的表格的结构吗?如果您可以提供数据和结果的示例,这也很有帮助。 – 2012-08-02 21:26:48

+0

所以基本上你需要按ID进行分组并列出该ID的所有日期?例如:12345,“01-01-2012 02-02-2012” – 2012-08-02 21:27:59

回答

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

+0

这看起来是正确的,我今天会试一试,并回报... – Thildemar 2012-08-03 14:13:31

+0

需要<=在datediff线,但似乎工作,谢谢! – Thildemar 2012-08-03 15:02:31

+0

不错,很高兴我可以有任何帮助:) – 2012-08-03 16:32:49

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 

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

+0

这就是彼此在一个星期内进入的地方。真的,您没有任何将程序连接到结果的标识符,除了结果总是会在程序后的0-7天内出现。这和两个筛选程序将永远不会在对方约6个月内出现。 – Thildemar 2012-08-03 14:15:18