Как выбрать все столбцы из таблицы для записи, но исключить столбец, если все записи для этой записи в указанном столбце имеют значение NULL?

У меня есть схема в базе данных Oracle, доступной только для чтения, под названием MAXSCHEMA и таблица в ней под названием WORKORDER. В этой таблице есть столбец с названием WONUM.

Если я использую этот оператор SQL:

SELECT *
FROM MAXSCHEMA.WORKORDER
WHERE WONUM = '101319066'

В результате я получаю следующие 3 строки:

ВОНУМ РОДИТЕЛЬ ДАТА ФЕЙЛДАТА ПОЛОЖЕНИЕ ДЕЛ 101319066 нулевой нулевой ЗАКРЫВАТЬ 101319066 101319063 нулевой МОЖЕТ 101319066 нулевой нулевой ЗАКРЫВАТЬ

Я хотел бы исключить столбец FAILDATE, поскольку все записи для этой записи WONUM в этом столбце имеют значение null.

Напротив, я бы хотел сохранить столбец PARENT, поскольку в этом столбце есть хотя бы одно ненулевое значение.

Итак, мой желаемый результат будет:

ВОНУМ РОДИТЕЛЬ ПОЛОЖЕНИЕ ДЕЛ 101319066 нулевой ЗАКРЫВАТЬ 101319066 101319063 МОЖЕТ 101319066 нулевой ЗАКРЫВАТЬ

Я понимаю, что могу просто открыто указать нужные мне столбцы:

SELECT WONUM, PARENT, STATUS
FROM MAXSCHEMA.WORKORDER

но есть ли другой способ исключить столбец FAILDATE на основании того факта, что все записи для этого значения WONUM имеют значение null?

Простой ответ: Ваша идея не имеет смысла и невозможна. Цель SQL — предоставить список столбцов, которые должен включать результат, а затем что-то сделать с этим результатом, а не наоборот.

Jonas Metzler 02.05.2024 14:01

Поскольку вы не можете удалить столбец из запроса во время выполнения, один из вариантов — проверить, имеет ли столбец какие-либо значения, отличные от NULL, а если нет, то исключить столбец. Сколько столбцов в этой таблице и сколько раз вы будете запускать этот запрос. Если это много раз, вы можете динамически создать запрос, включающий только ненулевые столбцы.

Himanshu Kandpal 02.05.2024 15:24
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
2
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После того, как вы указали «*» в своем запросе, он вернет все столбцы из таблицы независимо от их значений, включая нулевые значения. Таким образом, для этой проблемы нет обходного пути, кроме явного удаления столбца из запроса.

Другие вопросы по теме