Как создать запрос для извлечения значения из моей таблицы - PullRequest
0 голосов
/ 07 января 2019

У меня есть таблица оракула, и я хочу извлечь значение из столбца, это моя таблица

id|document_number|container_id|state|
--|---------------|------------|-----|
1 |CC330589       |356         | 40  |
--------------------------------------
1 |CC330589       |null        | 99  |
-------------------------------------

Я хочу создать запрос, который извлекает идентификатор контейнера (значение 356), если номер документа равен 'CC330589', а состояние - 99.

В моем случае я хочу значение 356 (не значение null).

Есть идеи, как мне создать запрос? Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Вы можете использовать fid все ненулевые значения для данного документа и использовать EXISTS, чтобы убедиться, что для данного документа существует состояние 99:

SELECT *
FROM t
WHERE document_number = 'CC330589'
AND container_id IS NOT NULL
AND EXISTS (
    SELECT 1
    FROM t AS x
    WHERE document_number = t.document_number
    AND state = 99
)
0 голосов
/ 07 января 2019

Будет получен набор результатов, указанный вами в данных примера. Правильное ли это решение зависит от ваших бизнес-правил, которые вы не указали:

select document_number
       , max(container_id) as container_id
       , max(state) as state
from your_table
group by document_number

Вот еще одно решение

select t1.document_number
       , coalesce(t1.container_id, t2.container_id) as container_id
       , t1.state as state
from your_table t1
     join your_table t2
       on t1.document_number = t2.document_number
where t1.state = 99
and  t1.document_number = 'CC330589'
and t2.state != 99

Опять же, это приведет к указанному результату из данных выборки, но может быть неверным по отношению к вашему реальному набору данных.

0 голосов
/ 07 января 2019

Вы можете попробовать ниже -

select * from tablename A
inner join
(select document_number, min(container_id ) from tablename  group by document_number)B
on A.document_number=B.document_number
where A.document_number='CC330589' and state=99
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...