2016-01-26 75 views
2

如何將NULL值替換爲以下NOT NULL值(因此該列中的值的下一行爲NOT NULL)?如何用下面的NOT NULL值替換NULL值? (SQL)

想象下表(點擊它):

TABLE

a 100 
b NULL 
c 102 
d NULL 
e NULL 
f 104 

目標是,一個是100,b,c是102和d,E,F是104

我使用HANA作爲數據庫。

此致敬禮。謝謝。

+0

我們是否假設第一列的字母順序是決定數據順序的因素? –

+1

@TomH:感謝您的更正。是的,你可以假設。 – PassioEtDesiderium

回答

1

我對HANA並不熟悉,但這個SQL非常通用且符合ANSI標準,所以它應該可以與大多數SQL引擎一起工作。一些更簡單的引擎不支持子查詢,但大多數應該。

SELECT 
    T1.col1, 
    COALESCE(T1.col2, T2.col2) AS col2 
FROM 
    My_Table T1 
LEFT OUTER JOIN My_Table T2 ON 
    T2.col1 = 
     (
     SELECT MIN(T3.col1) 
     FROM My_Table T3 
     WHERE 
      T3.col1 > T1.col1 AND 
      T3.col2 IS NOT NULL 
     ) 

查詢的想法是,它JOIN S上的表本身獲得下一個行(T2表的別名),無col2一個NULL值。

+0

這個解決方案工作得很好。謝謝。 :) – PassioEtDesiderium