Как выбрать строку с отсутствующей записью в историзации? - PullRequest
0 голосов
/ 14 ноября 2011

из следующей базы данных мне нужно выбрать все IDQ, которые не имеют записи для 11.11.2011.

IDQ | DATE
----------------
 1  | 08.11.2011
 1  | 09.11.2011
 1  | 10.11.2011
 1  | 12.11.2011
 1  | 13.11.2011

Я не могу понять, как выразить sql

select
   IDQ
from
   TBL_WITH_IDQ T
where not exists ( DATE = '11.11.2011' ) // sql does not the job

База данных Oracle 11g.

Может быть, кто-то может мне помочь?

Ответы [ 3 ]

1 голос
/ 14 ноября 2011

Попробуйте:

select idq
from TBL_WITH_IDQ
group by idq
having max(decode("DATE", '11-Nov-2011',1, 0)) = 0 -- double-quoted keyword column name

(однопроходное решение) - если ваша исходная таблица TBL_WITH_IDQ

С другой стороны, если ваша исходная таблица TBL_WITH_DATES и вы хотите включить IDQ с нет записей вообще, я бы предложил этот вариант решения Parkyprg:

select IDQ
from TBL_WITH_IDQ t
where not exists
(SELECT null 
 FROM TBL_WITH_DATES d
 where d."DATE" = '11-Nov-2011' and t.idq = d.idq)
0 голосов
/ 14 ноября 2011

У вас есть таблица, где IDQ является уникальным идентификатором? Это так, ваш запрос может быть преобразован следующим образом ...

SELECT
  *
FROM
  primary_idq_table
WHERE
  NOT EXISTS (SELECT * FROM TBL_WITH_IDQ WHERE DATE = '11.11.2011')
0 голосов
/ 14 ноября 2011
select
   IDQ
from
   TBL_WITH_IDQ T
where IDQ NOT IN ( SELECT IDQ FROM TBL_WITH_DATES where DATE = TO_DATE('11.11.2011','dd.mm.YYYY') )

TBL_WITH_DATES - таблица, которую вы использовали в своем вопросе, а TBL_WITH_IDQ - исходная таблица, в которой определены IDQ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...