如何在历史记录中选择缺少条目的行?

时间:2011-11-14 09:41:43

标签: sql oracle

从以下数据基础我需要选择没有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 个答案:

答案 0 :(得分:1)

尝试:

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并且您希望包含带有 no 条目的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)

答案 1 :(得分:0)

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的原始表格。

答案 2 :(得分:0)

你有一张IDQ是唯一标识符的表吗?是这样,您的查询可以像这样改造......

SELECT
  *
FROM
  primary_idq_table
WHERE
  NOT EXISTS (SELECT * FROM TBL_WITH_IDQ WHERE DATE = '11.11.2011')