У меня есть групповой запрос, который возвращает разные результаты, первый раз возвращает неверный результат, а затем возвращает правильный результат.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
Запрос начал вести себя, как это несколько дней назад, в противном случае работает в совершенстве.
Дополнительная информация
- Есть 5 индексов на sales_detail таблице
- Клиент представляет собой вид, физические таблицы в другой схеме с тем же именем информационного
Environment
- ОС: Windows 2003 Server
- База данных: Oracle 9.0.1.1 Предприятию
Попробуйте удалить группу и измените выбор на 'select *'. Убедитесь, что вы не получаете несколько строк несколько раз. –
Я проверил, указав конкретный invoice_no (этот результат счета удваивается), он возвращает правильные данные – user2705899
Можете ли вы предоставить автономный тестовый файл с http://sqlfiddle.com –