Sybase轮未按预期工作

时间:2016-09-08 05:40:02

标签: rounding sybase isql

以下是我的方案。我们正在从Sybase检索数据。我们使用putty来实现这一点,因为我们无法直接访问Sybase。从内部查询中,我获得的指标值为6.500000。但是在外部查询中,当我将Round函数应用于此指标时,它变为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 | 2016年7月6日12:00 AM | 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 | 2016年7月6日12:00 AM | 6

1 个答案:

答案 0 :(得分:0)

select round(6.500000,0)在各种版本的sybase ASE和IQ中返回7,你的产品版本是什么?请运行

选择@@ version

Kimon的

相关问题