2011-08-12 17 views
1

可以說我有這樣的一個表:SQL:刪除多行空值,concathenate成一排

col1  col2  col3 
row1 1  null null 

row2 null 2  null 

row3 null null 3 

所有數據類型,整數或長。我需要一個這樣的表格:

col1  col2  col3 
row1 1  2  3 

我該如何用sql語句完成此操作?我假設我必須創建一個新表並使用select語句插入一個新行,但我更像是一個編碼器,不知道我應該使用哪種語句。謝謝您的幫助。

+0

爲什麼/如何將row1/2/3合併爲一行?你如何確定他們應該組合在一起? –

+1

您需要更多信息;你是否試圖將*整個*表合併爲一行?如果不是,你如何定義構成一行的行的子集?無論哪種方式,你如何確定將有多少值,比如說,如果多行有一個值,那麼「col」呢?你想要最大?分?和? etc. –

+1

如何合併這些行:| 1 | NULL | 2和| 3 | NULL | 4,只需總和值? – sll

回答

2

sllev讓我走上了正軌。就我而言,因爲除了一個值以外,所有的值在任何給定的列中總是爲空,所以我只需要使用MAX()函數。我最後的SQL語句如下所示:

Select MAX(Merge_Table_Parcel_1.txtFrequency1) AS Frequency1, 
     MAX(Merge_Table_Parcel_1.SUM_INST_N) AS SUM_INST_N1, 
     MAX(Merge_Table_Parcel_1.SUM_INST_D) AS SUM_INST_D1, 
     MAX(Merge_Table_Parcel_1.SUM_CTRN_D) AS SUM_CTRN_D1, 
     MAX(Merge_Table_Parcel_1.SUM_CTRN_N) AS SUM_CTRN_N1, 
     MAX(Merge_Table_Parcel_1.SUM_TRAN_N) AS SUM_TRAN_N1, 
     MAX(Merge_Table_Parcel_1.SUM_PPU) AS SUM_PPU1, 
     MAX(Merge_Table_Parcel_1.SUM_PPUJOBS) AS SUM_PPUJOBS1, 
     MAX(Merge_Table_Parcel_1.SUM_DAYT) AS SUM_DAYT1, 
     MAX(Merge_Table_Parcel_1.SUM_RESD_D) AS SUM_RESD_D1, 
     MAX(Merge_Table_Parcel_1.SUM_RESD_N) AS SUM_RESD_N1, 
     MAX(Merge_Table_Parcel_1.SUM_ON_STRN_D) AS SUM_ON_STRN_D1, 
     MAX(Merge_Table_Parcel_1.SUM_ON_STRN_N) AS SUM_ON_STRN_N1 
    FROM Merge_Table_Parcel_1 

簡單,我知道,但我偶然看到它馬上。感謝所有提供答覆的人,並感謝sllev誰指出我正確的方向。

0

SELECTMAX(COL1),爲Col1中,
MAX(COL2)作爲Col2中,
MAX(COL3)作爲COL3
FROM TABLE_NAME

我認爲這會有所幫助....