SQL Запрос с частью ключа, возможно, NULL - PullRequest
0 голосов
/ 02 апреля 2020

Я работал над запросом SQL, который должен получить значение с помощью ключа из двух столбцов, где один из столбцов может быть нулевым. И если он нулевой, я хочу выбрать это значение только при наличии нет строки с указанным c ключом

Итак. CUSTOM_____PLAN_____COST VENDCO_____LMNK_____50 VENDCO_____null_____25 BALLCO_____null_____10

Я пытаюсь запустить запрос, который вытянет это в одно поле, то есть значение VENDCO в 50 и значение BUYCO в 10, игнорируя строку VENDCO с 25. Это было бы как часть присоединенного подзапроса, поэтому я не могу использовать фактические ключи VENDCO / BUYCO et c. По сути, выберите значение стоимости вместе с планом, если он существует, но с нулевым значением, если плана нет.

Также может быть целесообразно указать, что если я "выберу *" из таблицы, в которой PLAN null "Я не получаю результаты - я должен выбрать, где PLAN = ''. Я не уверен, указывает ли это на что-то странное в данных.

Надеюсь, я проясняю.

1 Ответ

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

Я думаю, что not exists должен делать то, что вы хотите:

select t.*
from mytable t
where 
    plan is not null
    or not exists (
        select 1 from mytable t1 where t1.custom = t.custom and t1.plan is not null
    )

В основном это дает приоритет строкам, где plan не равно нулю в группах, совместно использующих custom.

Демонстрация на DB Fiddle :

CUSTOM | PLAN | COST
:----- | :--- | ---:
VENDCO | LMNK |   50
BALLCO | <em>null</em> |   10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...