Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 8 fp10 [BUG?] / 4 сообщений из 4, страница 1 из 1
05.12.2005, 11:36
    #33416678
Yaroslav Vishnevsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 8 fp10 [BUG?]
Есть вот такой запрос
...
Рейтинг: 0 / 0
05.12.2005, 11:44
    #33416706
Yaroslav Vishnevsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 8 fp10 [BUG?]
Yaroslav VishnevskyЕсть вот такой запрос

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT 
(SELECT  COALESCE(SUM(PAYMENTDOCUMENT.SUMGEN), 0 . 00 ) FROM PAYMENTDOCUMENT,RECORDPOINT          
 WHERE PAYMENTDOCUMENT.RECORDPONTRFCODE=RECORDPOINT.CODE AND STATUSCODE= 0  AND  PAYMENTDOCUMENT.TYPECODE= 0  
AND PERIODREFCODE= 200000024  AND RECORDPOINT.CODE IN ( SELECT  CODE FROM RECORDPOINT 
WHERE RECORDPOINT.TARIFFREFCODE IN (SELECT CODE FROM TARIFF WHERE SETTLETYPECODE= 2   AND OVENTYPECODE= 1  AND HEATINGTYPECODE IN ( 1 )) AND ISWORKINGCODE<> 1 ))    

,    COALESCE(SUM(BILL.BENIFIT/( 1 +BILL.VATVALUE)), 0 . 00 )   F1   

FROM   BENEFICIARY, RECORDPOINT rp, BILL  INNER JOIN TARIFFENTRY ON BILL.TARFFENTRYRFCODE = TARIFFENTRY.CODE 
 WHERE  BILL.RECORDPONTRFCODE=rp.CODE AND BILLTYPECODE IN ( 0 , 1 , 7 )  AND BILL.INVSTATUSCODE<> 2  AND BILL.PERIODREFCODE= 200000024  
AND TARIFFENTRY.TARIFFREFCODE IN(SELECT CODE FROM TARIFF WHERE SETTLETYPECODE= 2   AND OVENTYPECODE= 1  AND 
HEATINGTYPECODE IN ( 1 )) AND BILL.PAYMENTTYPECODE IN ( 0 , 3 , 4 , 7 , 13 )  AND BENEFICIARY.CODE =  BILL.BENEFICIARYCODE 
 AND BENEFICIARY.BENEFITCATEGRYCD  =  1 

и такой запрос

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT 
   COALESCE(SUM(BILL.BENIFIT/( 1 +BILL.VATVALUE)), 0 . 00 )   F1   

FROM   BENEFICIARY, RECORDPOINT rp, BILL  INNER JOIN TARIFFENTRY ON BILL.TARFFENTRYRFCODE = TARIFFENTRY.CODE 
 WHERE  BILL.RECORDPONTRFCODE=rp.CODE AND BILLTYPECODE IN ( 0 , 1 , 7 )  AND BILL.INVSTATUSCODE<> 2  AND BILL.PERIODREFCODE= 200000024  
AND TARIFFENTRY.TARIFFREFCODE IN(SELECT CODE FROM TARIFF WHERE SETTLETYPECODE= 2   AND OVENTYPECODE= 1  AND 
HEATINGTYPECODE IN ( 1 )) AND BILL.PAYMENTTYPECODE IN ( 0 , 3 , 4 , 7 , 13 )  AND BENEFICIARY.CODE =  BILL.BENEFICIARYCODE 
 AND BENEFICIARY.BENEFITCATEGRYCD  =  1 

запросы отличаются лишь тем что в 1м в 1е поле вычисляется некое значение
и как по мне на второе поле (F1) не должно влиять.
Однако поле F1 1го запроса не равно полю F1 второго запроса.
в7й версии и 8.1 такого замечено не было.
Кто то может обяснить кто не прав.
Сори что запросы такие, на простеньких такую ситуацию получить не удалось.
...
Рейтинг: 0 / 0
05.12.2005, 14:12
    #33417258
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 8 fp10 [BUG?]
Предлагаю COALESCE(SUM(BILL.BENIFIT/(1+BILL.VATVALUE)),0.00)
заменить на COUNT(*). Думаю, цифры тоже будут разными. Вложенный SELECT в списке полей выборки как-то влияет на саму выборку, и я замечал такое чуть ли не на второй версии DB2. Перенесите ниже во FROM.

Код: plaintext
1.
2.
3.
4.
SELECT 
  (SELECT x1 FROM ...),
  ...
FROM ...

Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
  t1.x1, 
  ...
FROM
  ...
  , (SELECT x1 FROM ...) t1
...
Рейтинг: 0 / 0
05.12.2005, 16:00
    #33417607
Yaroslav Vishnevsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 8 fp10 [BUG?]
Да, count(*) тоже показывал разные значения.
Ваш вариант даёт верный результат, сенкс.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 8 fp10 [BUG?] / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]