Раунд Sybase не работает должным образом

Ниже мой сценарий. Мы получаем данные из Sybase. Для этого мы используем замазку, так как у нас нет прямого доступа к Sybase. Из внутреннего запроса я получаю значение 6,500000 для метрики. Но во внешнем запросе, когда я применяю функцию раунда к этой метрике, она становится 6 вместо 7. Пожалуйста, помогите в этом вопросе!

Ниже мой внутренний запрос и полный запрос. Прикрепил данные также для справки.

Внутренний запрос

SELECT D.Col1,A.Col2,C.Col3,
SUM ( C.net_td_cnt ) AS td_cnt
FROM Tab1 A,Tab2 B,Tab3 C,Tab4 D
WHERE (A.Tab1 =B.Tab1 AND B.Tab2=C.yld_loc_cd AND D.Tab1=A.Tab1)
AND (D.Col1 IN ('Fil1') and A.Col2='Fil2'
AND ((C.Col3 BETWEEN 'Jul 6 2016' AND 'Jul 6 2016') OR 
(C.Col3 BETWEEN 'Jul    6 2016' AND 'Jul 6 2016')))
GROUP BY D.Col1,A.Col2,C.Col3
UNION
SELECT C.Col1,A.Col2,D.Col3,
SUM ( D.net_td_cnt ) AS td_cnt
FROM Tab1 A,Tab2 B,Tab4 C,Tab5 D
WHERE ( A.Tab1 =B.Tab1 AND C.Tab1=A.Tab1 AND B.Tab2 =D.yld_loc_cd )
AND ( C.Col1 IN ('Fil1') and A.Col2='Fil2' 
AND (D.Col3 BETWEEN 'Jul 6 2016' AND 'Jul 6 2016') )
GROUP BY C.Col1,A.Col2,D.Col3

Вывод: Col1 |Col2 |Col3 |td_cnt
Fil1 |Fil2 |6 июля 2016 г., 00:00 |6.500000

Полный запрос

SELECT A.Col1,A.Col2,A.Col3,
ROUND(A.td_cnt,0)  AS td_cnt
FROM
(SELECT D.Col1,A.Col2,C.Col3,
SUM ( C.net_td_cnt ) AS td_cnt
FROM Tab1 A,Tab2 B,Tab3 C,Tab4 D
WHERE (A.Tab1 =B.Tab1 AND B.Tab2=C.yld_loc_cd AND D.Tab1=A.Tab1)
AND (D.Col1 IN ('Fil1') and A.Col2='Fil2'
AND ((C.Col3 BETWEEN 'Jul 6 2016' AND 'Jul 6 2016') OR 
(C.Col3 BETWEEN 'Jul    6 2016' AND 'Jul 6 2016')))
GROUP BY D.Col1,A.Col2,C.Col3
UNION
SELECT C.Col1,A.Col2,D.Col3,
SUM ( D.net_td_cnt ) AS td_cnt
FROM Tab1 A,Tab2 B,Tab4 C,Tab5 D
WHERE ( A.Tab1 =B.Tab1 AND C.Tab1=A.Tab1 AND B.Tab2 =D.yld_loc_cd )
AND ( C.Col1 IN ('Cent') and A.Col2='Fil2' 
AND (D.Col3 BETWEEN 'Jul 6 2016' AND 'Jul 6 2016') )
GROUP BY C.Col1,A.Col2,D.Col3
) A ORDER BY A.Col3

Вывод: Col1 |Col2 |Col3 |td_cnt
Fil1 |Fil2 |6 июля 2016 г., 00:00 |6


person Darshan    schedule 08.09.2016    source источник


Ответы (1)


select round(6.500000,0) возвращает 7 в различных версиях sybase ASE и IQ, какая у вас версия продукта? Пожалуйста, бегите

выберите @@версию

Кимон

person Kimon    schedule 14.09.2016