Sql 如何在历史化中选择缺少条目的行?
从以下数据基础中,我需要选择所有没有2011年11月11日Sql 如何在历史化中选择缺少条目的行?,sql,oracle,Sql,Oracle,从以下数据基础中,我需要选择所有没有2011年11月11日IDQ条目的IDQ 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
IDQ
条目的IDQ
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
数据库是一个Oracle11g
也许有人能帮我
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_-是您在问题中使用的表格,带IDQ的TBL_是定义IDQ的原始表格。尝试:
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_和_IDQ
另一方面,如果您的原始表是带有日期的TBL_,并且您希望包含完全没有条目的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)
是否有IDQ是唯一标识符的表?就是这样,您的查询可以这样进行修改
SELECT
*
FROM
primary_idq_table
WHERE
NOT EXISTS (SELECT * FROM TBL_WITH_IDQ WHERE DATE = '11.11.2011')
我会使用notexists而不是notin。no
IDQ
不是我的主键。我有一个组合主键,上面有IDQ
+DATE
您误解了。您是否有一个不同的表,与您在问题中提到的表不同,其中IDQ是唯一的键?如果将时变数据分配给一个IDQ,那么在某个地方也会有一个IDQ表,这似乎是有道理的。第一个sql似乎完成了这项工作。。我还在评估。谢谢