我有两个表,用相同的结构填充到两个不同的表中:MST3_CURR和MST4_CURR。帐户被填充到两个表之一;每个表保存处于不同“状态”的帐户。为了生成完整的帐户列表,需要完全连接表,并提取帐户的最新数据。
还有其他几个表遵循完全相同的方法,其中我使用UNION ALL
operator 没有问题。然而,由于某些原因,当我执行UNION ALL
时,这两个表收到了帐户 4700121500023998 的记录,该记录位于MST3_CURR中,但其他帐户位于MST4_CURR中,并且不存在于最终数据集中。当我颠倒UNION ALL
的顺序,先有MST4_CURR,然后是MST3_CURR时,反过来也是正确的。
WITH cchm_d_curr AS (
SELECT * FROM hcus_raw.cchm_d_mst3_curr
UNION ALL
SELECT * FROM hcus_raw.cchm_d_mst4_curr
)
SELECT chd_current_balance FROM cchm_d_curr
WHERE
chd_account_number IN (4700121500023998, 4700121500090430, 4700121500044101, 4700121500250492, 4700121500250013)
;
字符串
对于Oracle 12 c所表现出的这种特殊行为,我无法找到任何答案。请让我知道,如果有信息丢失,将有助于回答我的问题。
- 谢谢-谢谢
3条答案
按热度按时间k7fdbhmy1#
可能是查询的表中的列的顺序不同,因此在联合中反转表导致不同的列被“where”过滤,即
字符串
返回与此查询所期望的内容不同的内容
型
我会检查原始问题中表hcus_raw.cchm_d_mst3_curr和hcus_raw.cchm_d_mst4_curr中的列顺序是否相同。
nfs0ujit2#
下面的语句返回[m3 first,then m4 first]是什么??
字符串
30byixjq3#
最近也注意到了同样的问题。由于某些原因,WITH子句与UNION ALL子句不匹配。将查询更改为UNION,如下所示,它应该通过。
字符串