Ниже приведен мой сценарий. Мы извлекаем данные из Sybase. Мы используем шпатлевку для достижения этой цели, поскольку у нас нет прямого доступа к Sybase. Из внутреннего запроса я получаю значение 6.500000 для показателя. Но во внешнем запросе, когда я применяю функцию Round к этой метрике, она становится 6 вместо 7. Пожалуйста, помогите по этой проблеме!Sybase round работает не так, как ожидалось
Ниже мой внутренний запрос и полный запрос. Приложите данные также для справки.
Внутренний запрос
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 12: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 г. 12:00 | 6