Заполнение пустых строк в oracle - PullRequest
0 голосов
/ 10 января 2020

У меня есть скрипт, в этом скрипте может быть только две строки! Моя проблема связана с коньками INFO, иногда одна из строк пуста, можно ли это сделать так, чтобы, если она пуста, она была заполнена данными, находящимися во второй строке ??

select           o.VALUE_NUMBER as transaction_value_number
                , i.VALUE_STRING as reader_value_string,
                , o.id
                , v.VALUE_STRING ||' '||c.VALUE_STRING ||' '|| x.VALUE_STRING AS  INFO
          from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION o
              join IOT_STREAM_ANALYTICS_LOG_REPRESENTATION  i 
                  on  o.parent = i.parent
            left  join IOT_STREAM_ANALYTICS_LOG_REPRESENTATION  v
                   on  i.parent = v.parent
                   and  v.KEY = 'truck1'
           left  join IOT_STREAM_ANALYTICS_LOG_REPRESENTATION  x
                   on  i.parent = x.parent
                   and  x.KEY = 'item_name'
           left  join IOT_STREAM_ANALYTICS_LOG_REPRESENTATION  c
                   on  x.parent = c.parent
                   and  c.KEY = 'truck2'
         where  i.key = 'reader' 
                    and i.VALUE_STRING = 'adc0156c-212d-11ea-80cb-e03f49835a25'
         and  o.key = 'transaction' 
         and o.value_number <> 0
          and v.VALUE_STRING ||' '||c.VALUE_STRING ||' '|| x.VALUE_STRING is not null
         GROUP BY o.id,o.VALUE_NUMBER , i.VALUE_STRING,v.VALUE_STRING ||' '||c.VALUE_STRING ||' '|| x.VALUE_STRING 

Вот мой ответ enter image description here

Я хочу, чтобы это было так: enter image description here

1 Ответ

1 голос
/ 10 января 2020

Вы можете использовать analytical function в верхней части вашего запроса следующим образом:

SELECT
    TRANSACTION_VALUE_NUMBER,
    READER_VALUE_STRING,
    ID,
       CASE
    WHEN TRIM(INFO) IS NULL THEN MAX(TRIM(INFO)) OVER(
        PARTITION BY TRANSACTION_VALUE_NUMBER
    ) 
   ELSE INFO
  END AS INFO
FROM (<YOUR_QUERY> );

Этот запрос выполняется с учетом того, что для одного TRANSACTION_VALUE_NUMBER есть только две строки, как вы упомянули в вопросе .

Ура !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...