【发布时间】:2021-07-27 05:16:36
【问题描述】:
我有一张表,我想做两个字段的总和。但是,由于列中有不同的数据类型,因此在尝试对值求和时会导致错误。 我正在寻找一种将所有数值添加到列中的方法,不包括非数值。
这是我的桌子:
id | value | stock
1, - ,45
1, 30 ,45
2, - ,-
2, 30 ,-
2, - ,-
3, 400, 55
3, 400, 60
4, 404, 55
这是我希望输出的样子:
id | value_total | stock_total
1, 30, 45
2, 30, -
3, 800, 115
4, 404, 45
这是我的代码:
SELECT id, SUM(NVL(value_total,0)) AS volume_total,
SUM(NVL(stock_total,0)) AS stock_total
FROM table1
group by id
我收到此错误:
ORA-01722: invalid number
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
*Action: Specify a valid number.
我的假设是错误来自列中的“-”值。在字段中添加所有数值但排除“-”值的任何提示或建议?
【问题讨论】:
-
首先,我假设您的实际数据没有逗号。其次,鉴于您发布的示例数据,为什么
id1 的stock_total是45 而不是90?源表中有 2 行,id为 1,stock为 45。第三,为什么要在源表中声明stock和value,显然,varchar2而不是 @ 987654332@?使用正确的数据类型将为您省去一个痛苦的世界。 -
@mail_the 。 . .您真的在使用不受支持的 Oracle 版本吗?