2012-08-02 67 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