2014-03-24 37 views
1

什麼腳本將返回一個表,該表通過下表中的ID合併行,並刪除ID不止一次出現的NULL值。因此,例如ID 3出現兩次,並且ID 217出現一次,腳本在下面運行後它們將看起來如何 該腳本必須是老派才能與SQL2000兼容。謝謝。將表中的行合併並省略NULL值

ID PreOpOrg PreOpTreatment  PostOpOrg PostOpTreatment 
3 RBA11   02    RBA11  06 
217 NULL   NULL   RN325  02 

ID  PreOpOrg PreOpTreatment  PostOpOrg PostOpTreatment 
3  RBA11   02    NULL  NULL 
3  NULL   NULL   RBA11  06 
217  NULL   NULL   RN325  02 
364  NULL   NULL   RBA11  02 
369  NULL   NULL   RN325  02 
481  GR123   05    NULL  NULL 
834  RBA11   02    NULL  NULL 
834  NULL   NULL   RBA11  04 
1066 NULL   NULL   RBA11  05 
2123 NULL   NULL   RBA11  05 
2246 NULL   NULL   RBA11  02 
2246 RBA11   02    NULL  NULL 
2512 RBA11   04    NULL  NULL 
2512 NULL   NULL   RBA11  06 
2694 NULL   NULL   RN325  05 
2892 NULL   NULL   RBA11  06 
2892 RBA11   05    NULL  NULL 
3311 RBA11   05    NULL  NULL 
3311 NULL   NULL   RBA11  06 
3344 RBA11   02    NULL  NULL 
3362 RBA11   02    NULL  NULL 
3770 RBA11   05    NULL  NULL 

回答

2

你可以做到這一點作爲一個集合:

select ID, max(PreOpOrg) as PreOpOrg, max(PreOpTreatment) as PreOpTreatment, 
     max(PostOpOrg) as PostOpOrg, max(PostOpTreatment) as PostOpTreatment 
from table t 
group by id; 

本工程爲您所提供的數據,因爲只有一個字段被填充。如果這是真的,那麼在其中一列中沒有「丟失」信息的危險。

+0

謝謝。如果每個字段不止一次填充,該怎麼辦? –

+0

@Gordon Linoff謝謝。應該永遠不會有一個ID填充不止一次的列,所以這將工作! –