【发布时间】:2018-04-17 06:47:44
【问题描述】:
WITH CTE AS
(
SELECT
ITM.CODE AS ITMCODE,
CASE
WHEN IOCODE IN (1,2) THEN AMOUNT
ELSE AMOUNT * -1
END AS AMOUNT
FROM
ITEMLINE ITL, ITEMS ITM
WHERE
ITL.ITEMREF = ITM.LOGICALREF
AND ITM.CODE = '123'
)
SELECT
ITMCODE, SUM(AMOUNT)
FROM
CTE
GROUP BY
ITMCODE
从 CTE 返回 5 行,数量为 float 类型。 Sum 函数返回 2,27373675443232E-13。如果我不使用 Amount * -1 没有问题,返回值是正常的。是什么原因造成的?这从一个视图返回,我不能改变它被禁止的视图,我必须修复这些值。五行的值是 5,6,7,8,9。谢谢。
【问题讨论】:
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(25 年前),不鼓励使用它
标签: sql sql-server tsql select sum