Ниже мой сценарий. Мы получаем данные из 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