powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, пожалуйста column_value
15 сообщений из 15, страница 1 из 1
Подскажите, пожалуйста column_value
    #39574317
Foxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надеюсь, в этот раз я подробно опишу проблему.

Существует запрос

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
  q.start_date beg, count(*) cnt from table_one q
  where q.DT between SHC_FLT_PKG.GET_BEG_DATE and SHC_FLT_PKG.GET_END_DATE
                                 and (logical_name in (select column_value from table (SHC_FLT_PKG.GET_KE())) 
                                 or (select column_value from table (SHC_FLT_PKG.GET_KE()) where rownum = 1) is null)
                                 and q.resolution_code in (select w.val name from table_two w where w.state_id in (select column_value from 
                                  table (SHC_FLT_PKG.GET_CLOSE_COD()))
                                 or (select column_value from table (SHC_FLT_PKG.GET_CLOSE_COD()) where rownum = 1) is null)  
                                 group by q.start_date



Возвращаются не ве данные, а только те, в которых в условии

Код: plsql
1.
2.
3.
and q.resolution_code in (select w.val name from table_two w where w.state_id in (select column_value from 
                                  table (SHC_FLT_PKG.GET_CLOSE_COD()))
                                 or (select column_value from table (SHC_FLT_PKG.GET_CLOSE_COD()) where rownum = 1) is null)


содержатся NOT NULL значения.

Селект же
Код: plsql
1.
2.
3.
4.
5.
6.
select
  q.start_date beg, count(*) cnt from table_one q
  where q.DT between SHC_FLT_PKG.GET_BEG_DATE and SHC_FLT_PKG.GET_END_DATE
                                 and (logical_name in (select column_value from table (SHC_FLT_PKG.GET_KE())) 
                                 or (select column_value from table (SHC_FLT_PKG.GET_KE()) where rownum = 1) is null)
                                 group by q.start_date



Возвращает все значения, даже если они имеют NULL

Как можно переписать условие, что бы он захватывал и NULL? Разница между выводом в таблицах ~ 600 значений и везде в

Код: plsql
1.
q.resolution_code



имеют значение NULL. Он изначально сравнивает значения
Код: plsql
1.
q.resolution_code


И
Код: plsql
1.
select w.val name from table_two w where w.state_id in (select column_value from  table (SHC_FLT_PKG.GET_CLOSE_COD()))



и, видя, что значение NULL пропускает его.
Если объяснил не понятно, еще раз объясню.Такой вот я.
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574318
Foxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S.
logical_name так же имеют значения NULL, но в таблицу приходят
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574319
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxeyЕсли объяснил не понятно, еще раз объясню.Такой вот я.В чём смысл переливать из пустого в порожнее?
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574322
Foxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

выборка данных идет с даты по дату, независимо от того, какое действие было произведено
в w.val лежит ключ, по которому может идти выборка. Т.е. 'Закрыт', 'Открыт', 'Заморожен'
Если запрос пришел, но к нему еще не было применено действий, он имеет значение NULL
При данном запросе он должен выдавать все зарегистрированные запросы в промежутки между
Код: plsql
1.
SHC_FLT_PKG.GET_BEG_DATE and SHC_FLT_PKG.GET_END_DATE



logical_name, в силу того, что идет сравнение с
Код: plsql
1.
SHC_FLT_PKG.GET_KE()


Возвращает значения либо указанные в нем, либо все,
следующее же условие не возвращает значения NULL, потому что идет сравнение не только с SHC_FLT_PKG.GET_CLOSE_COD(), а так же со значениями в q.resolution_code, в котором строки со значениями NULL нет
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574329
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foxey,

не может такого быть
in c null не дружит
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SQL> ed
Wrote file afiedt.buf

  1  with
  2  t (id,n) as (
  3   select 1,'One' from dual union all
  4   select 2,'Two' from dual union all
  5   select 3,''    from dual
  6   )
  7  ,t_in (id,name) as (
  8   select 10,'One' from dual union all
  9   select 20,'Two' from dual union all
 10   select 30,''    from dual
 11   )
 12* select * from t where n in (select name from t_in)
SQL> /

        ID N
---------- ---
         1 One
         2 Two



в каком случае Вам надо учитывать null?

если всегда то or xxx is null

.....
stax
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574331
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxeyP.S.
logical_name так же имеют значения NULL, но в таблицу приходят
попадает из за or (select column_value from table (SHC_FLT_PKG.GET_KE()) where rownum = 1)

.....
stax
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574338
Foxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

запрос возвращает значения из table_one

В нем содержатся, в частности, строки, где logical_name = NULL и они спокойно возвращаются в таблицу и учитываются при подсчете
В частности q.resolution_code тоже существуют строки со значением NULL, но они не возвращаются в таблицу при селекте.
Есть такие строки, в которых logical_name NULL, а resolution_code NOT NULL, такие строки возвращаются
В строках где указан logical_name или logical_name NULL, но resolution_code = NULL, не возврабащтся
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574339
Foxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Код: plsql
1.
q.resolution_code in (select q.val name from stg_hp_hpcvaluesm1 q where q.state_id in (select nvl(column_value, q.state_id) from DUAL, table (SHC_FLT_PKG.GET_CLOSE_COD()) (+)))



Тоже не возвращает NULL
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574347
Foxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

В этом то и смысл, что здесь этот код работает. При указании же с чем сравнивать он пропускает нули, потому что не может с ними сравнить
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574353
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxeyStax,

Код: plsql
1.
q.resolution_code in (select q.val name from stg_hp_hpcvaluesm1 q where q.state_id in (select nvl(column_value, q.state_id) from DUAL, table (SHC_FLT_PKG.GET_CLOSE_COD()) (+)))



Тоже не возвращает NULL
ето не для борьбы с Вашим resolution_code is null

ето для случая если table (SHC_FLT_PKG.GET_CLOSE_COD() не возвращает ни одного елемента,
то из stg_hp_hpcvaluesm1 выбрать все (кроме null ,in c null не пашет)

1) если Вам надо всегда выбирать записи с resolution_code is null то добавить
and (q.resolution_code in (...) OR q.resolution_code is null)

2)если в stg_hp_hpcvaluesm1 есть val name is null
то можно іспользовать nvl и несуществующее значение (или недокументированное но...)
тогда

Код: plsql
1.
nvl(q.resolution_code.'~') in (select nvl(q.val,'~') name from stg_hp_hpcvaluesm1 q2 where q2.state_id in (select nvl(column_value, q2.state_id) from DUAL, table (SHC_FLT_PKG.GET_CLOSE_COD()) (+)))




.....
stax
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574358
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxeyStax,

В этом то и смысл, что здесь этот код работает. При указании же с чем сравнивать он пропускает нули, потому что не может с ними сравнить

select state_id ,val name from stg_hp_hpcvaluesm1 where val is null and state_id is not null
возвращает записи?

.....
stax
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574360
Foxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
Нет, не возвращает

Код: plsql
1.
and (q.resolution_code in (select q.val name from stg_hp_hpcvaluesm1 q where q.state_id in (select column_value from table (SHC_FLT_PKG.GET_CLOSE_COD()))) or q.resolution_code is null)


ORA - 00933 ругается
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574383
Foxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

ORA - 00933 больше не ругается, теперь он не выводит никаких значений.

Код: plsql
1.
 and q.resolution_code in (select q.val name from stg_hp_hpcvaluesm1 q where q.state_id in (select column_value from table (SHC_FLT_PKG.GET_CLOSE_COD())) or q.resolution_code is null)
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574386
Foxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
(q.resolution_code in (select q.val name from stg_hp_hpcvaluesm1 q where q.state_id in (select column_value from table (SHC_FLT_PKG.GET_CLOSE_COD()))) or q.resolution_code is null)


Выводит, где значения только NULL.
Нужны же с NULL и NOT NULL
...
Рейтинг: 0 / 0
Подскажите, пожалуйста column_value
    #39574400
Foxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все. Stax, спасибо за помощь
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, пожалуйста column_value
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]