查询根据SELECT中的列列表返回不同的结果

时间:2017-01-19 15:43:14

标签: sql oracle oracle12c

我有以下观点:

CREATE OR REPLACE VIEW FRM_STATAGGREGATE_VIEW AS
SELECT a.id aggregate_id, 
       SUM(S.PROD_TIME) PROD_TIME1, 
       SUM(S.PROD_TIME) PROD_TIME2
FROM wms_aggregate a
LEFT JOIN wms_stat_user s
ON a.id = s.aggregate_id
GROUP BY a.id;

我有以下问题:

SELECT prod_time1, NULL
FROM FRM_StatAggregate_VIEW
WHERE aggregate_id = 183
UNION ALL
SELECT prod_time1, prod_time2
FROM FRM_StatAggregate_VIEW
WHERE aggregate_id = 183;

查询产生以下结果:

PROD_TIME1  PROD_TIME2
60  <NULL>
0   0

换句话说,当我在查询中包含两个列时,它们返回值0,但是当只包含一个时,返回值(60)是正确的。

当我克隆视图中使用的表并重新创建视图时,结果是正确的。

我的问题是:这是一个Oracle错误吗?或者由于任何数据库/表/视图配置,索引等,这些结果是否可能?

0 个答案:

没有答案