Возврат записей из выбора на основе значения столбца. Oracle - PullRequest
0 голосов
/ 25 февраля 2020

Итак, у меня есть выбор, который выглядит следующим образом:

SELECT * FROM database1 WHERE ID = 3933185

Записи, которые мне возвращают выбранные записи:

ID          VALUE   ATTR_VALUE
3,933,185   1           1
3,933,185   1           1
3,933,185   1           1
3,933,185   1           2
3,933,185   1           2

Как вы можете видеть в В столбце attr_value могут быть разные значения, 1 или 2, ничего более.

Итак, что я должен добавить, чтобы проверить, когда attr_value существует со значением 1, тогда вернет записи, где attr_value = 1, в другом случае вернется, где attr_value = 2.

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

Ответы [ 3 ]

2 голосов
/ 25 февраля 2020

Вы можете использовать существующую логику c здесь:

SELECT d1.*
FROM database1 d1
WHERE NOT EXISTS (SELECT 1 FROM database1 d2
                  WHERE d1.ID = d2.ID AND d2.ATTR_VALUE > d1.ATTR_VALUE);
2 голосов
/ 25 февраля 2020

Если я следил за вами правильно, вы можете использовать аналитические функции:

select id, value, attr_value
from (select t.*, rank() over(order by attr_value) rn from mytable t) t
where rn = 1
2 голосов
/ 25 февраля 2020

Я думаю, что вы хотите:

select t.*
from t
where t.value = (select min(t2.value) from t t2 where t2.id = t.id);

Вы также можете использовать функции analyti c:

select t.*
from (select t.*, min(t.value) over (partition by id) as min_value
      from t
     ) t
where value = min_value;
...