У меня есть инструкция sql, которая пытается получить строки, имеющие счет больше 1 для всех похожих строк. Во всех этих строках одно поле имеет нулевое значение.SQL в Oracle Group по NULL возвращает несколько строк
Случай 1:
Скажем, имя таблицы ABC
BUSINESS_UNIT, СЧЕТ, FLAG
A 1 (Null)
A 1 (Null)
SQL Statement: SELECT BUSINESS_UNIT, INVOICE, FLAG из таблицы ABC group by BUSINESS_UNIT, INVOICE, FLAG с COUNT (*)> 1
Я ожидаю, что он не вернет строки, поскольку оба флага в основном пусты. Но она возвращает
BUSINESS_UNIT, Invoice, FLAG
A 1 (Null)
Случай 2:
ТАБЛИЦА ABC
BUSINESS_UNIT, INVOICE, FLAG
А 1 (нуль)
А 1 (нуль)
В 1 1
В 1 (нуль)
инструкцию SQL: SELECT, BUSINESS_UNIT, СЧЕТ, ФЛАГ из группы ТАБЛИЦА ABC по BUSINESS_UNIT, счету, FLAG, имеющему COUNT (*)> 1
Я ожидаю, чтобы результат
BUSINESS_UNIT, СЧЕТ, FLAG
B 1 1
Это для Oracle 11g. Может ли кто-нибудь помочь в этом и сообщите мне, можем ли мы использовать любую из поставленных функций в Oracle?
После редактирования оригинальных операторов SQL.
Фактически я должен удалить флаг из группы и выбрать и добавить к счету, чтобы идентифицировать несколько флагов для похожих строк.
Спасибо!
Спасибо за ответ Рафаэль, фильтр будет работать в случае 1, но для случая 2 он не будет работать должным образом. – startedFromTheBottom
@startedFromTheBottom нет ничего, что могло бы заставить ваш второй запрос работать ... '1 <> NULL' –
@startedFromTheBottom, за исключением случаев, когда флаг может быть только 1 или null. Это так, или нет? –