【发布时间】:2017-01-15 22:27:33
【问题描述】:
以下是我的场景。我们正在从 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 |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 |6
【问题讨论】: