Несколько условий в запросе выбора с использованием Oracle 11g - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть таблица, и я пытаюсь выполнить запрос с несколькими условиями

select POLICY_REFER,
       END_REFER,
       CLIENT_NAME,
       POLICY_PRODUCT,
       ISSUE_DATE,
       GROSS,
       DOC_TYPE,
       DOC_STATUS
from   POLICY_MASTER
  1. ISSUE_DATE МЕЖДУ: DFrom И: DTo

  2. DOC_STATUS = 'Припарковано'

Эти два условия должны соответствовать

  1. CLIENT_NAME =: клиент или CLIENT_NAME имеют значение

  2. POLICY_PRODUCT =: Продукт или POLICY_PRODUCT равны нулю

Эти два зависят от выбора из поля со списком, для которого я пишу это

select POLICY_REFER,
       END_REFER,
       CLIENT_NAME,
       POLICY_PRODUCT,
       ISSUE_DATE,
       GROSS,
       DOC_TYPE,
       DOC_STATUS
from   POLICY_MASTER
where  ISSUE_DATE BETWEEN :DFrom AND :DTo
and    CLIENT_NAME = :Client or CLIENT_NAME is null
and    POLICY_PRODUCT = :Product or POLICY_PRODUCT is null
and    DOC_STATUS = 'Parked'".... 

Этот запрос может принять, что POLICY_PRODUCT имеет значение null, но не работает с CLIENT_NAME, равно NULL ...

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Запрос работает нормально. Я думаю, что проблема с атрибуты столбца CLIENT_NAME, проверьте, есть ли атрибуты столбец, потому что есть атрибуты, которые не позволяют ноль значения в запросе

select POLICY_REFER,
       END_REFER,
       CLIENT_NAME,
       POLICY_PRODUCT,
       ISSUE_DATE,
       GROSS,
       DOC_TYPE,
       DOC_STATUS
from   POLICY_MASTER
where  (ISSUE_DATE BETWEEN :DFrom AND :DTo)
and    (CLIENT_NAME = :Client or CLIENT_NAME is null)
and    (POLICY_PRODUCT = :Product or POLICY_PRODUCT is null)
and    DOC_STATUS = 'Parked'"
0 голосов
/ 06 ноября 2018

Я подозреваю, что проблема в том, что вам не хватает скобок вокруг ваших or условий, например Я думаю, что ваш запрос должен выглядеть примерно так:

select POLICY_REFER,
       END_REFER,
       CLIENT_NAME,
       POLICY_PRODUCT,
       ISSUE_DATE,
       GROSS,
       DOC_TYPE,
       DOC_STATUS
from   POLICY_MASTER
where  ISSUE_DATE BETWEEN :DFrom AND :DTo
and    (CLIENT_NAME = :client or :client is null)
and    (POLICY_PRODUCT = :product or :product is null)
and    DOC_STATUS = 'Parked'".... 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...