我有一个组查询返回不同的结果,第一次返回错误的结果,然后返回正确的结果。Oracle 9.0.1.1 - 同样的查询返回不同的结果
select
c.customer_name, c.customer_address, invoice_no,
sum(nvl(invoiced_amount,0)) invoice_amount,
sum(nvl(received_amount,0)) received_amount,
sum(nvl(returned_amount,0)) returned_amount
from sales_detail d, sales s, customer c
where d.inquiry_id = s.inquiry_id
and s.customer_id = c.customer_id
and s.sale_date between '01-jan-2012' and '31-dec-2012'
group by c.customer_name, c.customer_address, invoice_no
它返回多行,并提供正确的行计数,但双打有些发票的价值,当它运行第一次,后来给出正确的结果通常它发生。
下面是一个例子:在数据库
实际数据由查询
invoice_no | invoiced_amount | received_amount | returned_amount
000010020 | 500 | 230 | 0
结果返回
invoice_no | invoiced_amount | received_amount | returned_amount
000010020 | 1000 | 460 | 0
查询开始表现得像这样一些天前,否则是工作完美。
附加信息
- 上有sales_detail表5个索引
- 客户是一个视图,物理表是在具有相同名称
环境信息
另一个模式- 操作系统:Windows 2003服务器
- 数据库:Oracle 9.0.1.1企业
尝试删除该组,并将select更改为'select *'。检查你没有多次获取任何行。 –
我已通过特定invoice_no(此发票结果翻倍)进行检查,它将返回正确的数据 – user2705899
您可以使用http://sqlfiddle.com –