PostgreSQL row_to_ json и не является нулевым - PullRequest
0 голосов
/ 11 апреля 2020

Ниже моя таблица1

-------------------------------------
category_name | col1_name | col2_name
-------------------------------------
postgres      | 1         | null
-------------------------------------
SAM           | null      | 2
-------------------------------------
MariaDB       | 1         | 3
-------------------------------------

Ниже мой запрос

select row_to_json(row) as "tableRow"
from (
    select 
      t.category_name as "categoryName",
      ( select distinct on (col2_name) 
          st.col2_name as "col2Name"
        from Table1 st
        where
          st.col2_name = t.col2_name and
          st.col2_name is not null )
    from Table1 t
) row;

Ниже мой результат

-------------------------------------------
tableRow
-------------------------------------------
{"categoryName":"postgres","col2Name":null}
-------------------------------------------
{"categoryName":"SAM","col2Name":"2"}
-------------------------------------------
{"categoryName":"MariaDB","col2Name":"3"}
-------------------------------------------

Как мне вернуть мой результат как показано ниже?

-------------------------------------------
tableRow
-------------------------------------------
{"categoryName":"postgres"}
-------------------------------------------
{"categoryName":"SAM","col2Name":"2"}
-------------------------------------------
{"categoryName":"MariaDB","col2Name":"3"}
-------------------------------------------

col2_name не должен возвращаться, если в нем есть нулевое значение.

Я попытался включить 'col2_name не является нулевым' в родительский запрос, но это удаляет весь ряд.

Пожалуйста, помогите. Спасибо.

1 Ответ

0 голосов
/ 11 апреля 2020

Вы можете jsonb_strip_nulls

select jsonb_strip_nulls(to_jsonb(row)) as table_row
from ( 
  ....
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...