2016-01-26 1 views
2

Как заменить значения NULL следующим значением NOT NULL (так что следующая строка со значением в этом столбце NOT NULL)?Как заменить значения NULL следующим значением NOT NULL? (SQL)

Представьте следующую таблицу (нажмите на него):

TABLE

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

Цель в том, что 100, Ь, с 102 и д, д, е имеют 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 ы таблица к себе, чтобы получить следующую строку (Т2 таблицы псевдонимов) без значения NULL в col2.

+0

Это решение работает очень хорошо. Спасибо. :) – PassioEtDesiderium