一种是直接COUNT计算视图记录数,另一种是先SELECT *后再COUNT,两种结果居然不一样,但实际记录数是后面的先SELECT *后再COUNT的结果,请问为何会出现如此情况,如何理解?
第一种直接COUNT:
SELECT count(*) FROM "_SYS_BIC"."tcl.zfi/ZCAV_BKPF_BSEG_OUT" ('PLACEHOLDER' = ('$$IP_HKONT$$', '6*'),
'PLACEHOLDER' = ('$$IP_BUDAT2$$', '20151230'), 'PLACEHOLDER' = ('$$IP_BUDAT1$$', '20150101'))
第二种写法:
select count(*) from (
SELECT * FROM "_SYS_BIC"."tcl.zfi/ZCAV_BKPF_BSEG_OUT" ('PLACEHOLDER' = ('$$IP_HKONT$$', '6*'),
'PLACEHOLDER' = ('$$IP_BUDAT2$$', '20151230'), 'PLACEHOLDER' = ('$$IP_BUDAT1$$', '20150101'))
)
经过反复测试,两种的处理结果确实是不一样的,对于第一种直接COUNT计算视图,实际是COUNT计算视图中各表参与计算的条数,所以统计数量较多;而第二种是对计算视图结果集的COUNT,就是对做完聚合后的结果集统计,是最终的结果数量;这两个的统计对象不一样,所以统计结果也就自然不一样了;
收起