回答

收藏

此SQL Server查询除法计算有什么问题?

技术问答 技术问答 115 人阅读 | 0 人回复 | 2023-09-13

我在SQL Server 2008 R2数据库上具有以下表结构:
8 X) ]/ R" r: D, X9 h/ Q+ {  CREATE TABLE FormTest4 b2 U  l" N$ J5 Y
(   $ }" T) g( s5 ?3 ]* h2 Y$ \
clientid char(10),
$ K& s& T- K9 _; h/ L& ]DateSelected date,
( ^: Z+ w: V4 }( K: H: u1 y/ r% gA int,& x0 o2 b) Y, O" B* a
B int,, M1 }+ \/ a' p6 k+ {+ T8 l0 U
C int
/ `+ j6 H. E1 k5 C) K' A! n7 ]/ S1 L)  n" ^/ H/ V  W  n9 E
我在表格FormTest中填写了以下信息  B; W! S& M# J  D
clientid        DateSelected      A       B     C9 L9 `; h& n! R/ b" D, r
x1              2006-06-09     65150    4921    10 D/ @0 J: g" H) z- ?
x2              2006-05-05     155926   69092   1
. i+ @' }3 Z. Y: t5 ~# \5 q% U, kx3              2006-01-20     95603    156892  1
# T' m* N: x* i! f2 r9 ?9 Ox4              2006-01-20     30704    164741  18 Q- O( u. i9 q: y
x4              2006-02-03     65150    174834  1
/ W+ x5 G$ S! \4 m  _- ^; x9 |: I6 xx5              2006-04-28     59629    4921    15 j: a( l& D# V2 f' ~) ?0 |
x6              2006-01-27     30704    162356  1
4 K, m$ N$ E$ b5 r; _7 }$ ux7              2006-06-30     65150    4921    1
, C2 L1 ^9 n* Cx8              2006-07-10     65150    4921    1" K9 c0 }9 x6 E  |" V. H
最后,我运行此sql查询:/ L3 G) i$ G: `. H4 C% [- W
SELECT clientid, (((a+ b + c) / 3) / 216647 * 10) AS Formula1 * j) z) S) e) @7 k' z
    From FormTest, I4 n; I" \$ g  L4 ]. B
但是后来我得到了这些结果:
% `8 r9 `; m/ Hclientid        Formula1      $ `' n- f: B5 P2 F6 [0 y3 K
x1              01 m7 O3 q0 Q" l. b* E* N+ J9 E. P
x2              0
% h* e9 H/ \# q" O: Jx3              00 h+ z( L# R4 n; U
x4              04 B/ h. D% H& J/ h* Y0 W
x4              0
: O8 s) i4 P8 F; d1 X' sx5              0! w# }8 p* ]& F( t0 y( H
x6              08 G) i' e  G/ B% W
x7              0
5 E6 H; e2 v, rx8              0) @5 O* ?' r9 k9 P! O
有人可以告诉我我在做什么错吗?1 Z" _/ G" p" Q4 w# {% T& o
               
% b9 f+ j, ~; G5 U解决方案:
& X0 H% T0 |4 j: v+ _: z7 f               
2 Y, r3 t  r& L" r
7 y7 e' _* f  `% A
; Z7 R2 T; s: n. o8 x) ]                这是因为您正在执行整数除法。您应使用以下方法将其中一个操作数转换为浮点数或十进制(取决于您进行的计算的精度和目的):2 c- Y+ t' f+ F" N! j1 Y; d
((CAST((a+ b + c) AS FLOAT) / 3) / 216647 * 10)5 N& ?, t8 B( o5 q0 F3 T
或可能:& ]; G& x, m- j7 P) A' D
(((a+ b + c) / 3.0) / 216647.0 * 10)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则