SELECT
SUM
(
CASE shkzg
WHEN
'S' THEN wrbtr
WHEN
'H' THEN wrbtr *
-
1
END
)
AS WRBTR
FROM vbsegk
AS a
INTO @DATA
(l_wrbtr
)
.
出现如下报错
The maximum possible number of places in th
e expression starting with WRBTR is 34 places wi
th 2 decimal places. There can be, however, no m
ore than 31 places and 14 decimal places.
用cast做类型转换
SELECT
SUM
(
CASE shkzg
WHEN
'S' THEN CAST
( wrbtr
AS DEC
(
20
,
2
)
)
WHEN
'H' THEN CAST
( wrbtr
AS DEC
(
20
,
2
)
) *
-
1
END
)
AS wrbtr
FROM vbsegk
AS a
INTO @DATA
(l_wrbtr1
)
.
测试不报错
也可以用如下写法
SELECT
SUM
(
CASE
shkzg
WHEN
'S'
THEN CAST
(
wrbtr
AS
CURR
(
20
,
2
)
)
WHEN
'H'
THEN CAST
(
wrbtr
AS
CURR
(
20
,
2
)
)
*
-
1
END
)
AS
wrbtr
FROM
vbsegk
AS
a
INTO
@DATA
(
l_wrbtr2
)
.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/190059/viewspace-3020390/ ,如需转载,请注明出处,否则将追究法律责任。