【发布时间】:2016-12-20 23:28:51
【问题描述】:
我想在同一个查询中显示两个表的结果,表是相同的,但一个存储历史信息,另一个存储今天的信息(在线),我的表看起来像这样。
历史表:TBL1
T_ID Resolve Date
---------- ------------ ------------
AD_1234 GOOD 12/18/16
VF_4569 BAD 12/19/16
RT_5436 GOOD 12/17/16
在线表:TBL2
T_ID Resolve Date
---------- ------------ ------------
AR_2334 BAD 12/20/16
FT_1362 BAD 12/20/16
GH_5676 GOOD 12/20/16
预期结果:TBL3
T_ID Resolve Date
---------- ------------ ------------
AD_1234 GOOD 12/18/16
VF_4569 BAD 12/19/16
RT_5436 GOOD 12/17/16
AR_2334 BAD 12/20/16
FT_1362 BAD 12/20/16
GH_5676 GOOD 12/20/16
无法创建新表、视图或任何必须通过查询完成的对象。
我不断收到重复的记录,我知道我在两个表上都没有相同的数据。
select o.transaction_id, o.ts_0002
from data_headers1 o
where
virtual_table_id = '5237260000000002621'
union all
select h.transaction_id, h.ts_0002
from data_headers1_hist h
where virtual_table_id = '5237260000000002621'
and TO_CHAR(h.ts_0002, 'YYYY/MM/DD HH24:MI:SS') >= '2016/12/01 00:00:00'
and TO_CHAR(h.ts_0002, 'YYYY/MM/DD HH24:MI:SS') <= '2016/12/30 23:59:59';
【问题讨论】:
-
你知道你必须使用
union..所以你试过了吗? -
请至少尝试一下并发布您的代码。
-
UNION ALL 看在上帝的份上
-
在您的查询末尾添加
group by transaction_id, ts_002 having count(*) > 1。这将显示哪些行是重复的。然后在两个表中查找它们 - 看看它们是否实际上在其中一个表中重复,或者它们是否在每个表中都是唯一的,但它们出现在两个表中。然后你必须看看为什么违反了 PK 约束(也许它没有启用?)或者为什么你的表之间可能有重叠,等等。试着一次解决这个小步骤。 -
@Zombraz - 哈哈,这就是菜鸟书的标题!正如他们所说,“计算机太笨了,不会说谎。”每当用户所说的内容与计算机所说的内容之间存在差异时,主要嫌疑人始终是用户。