我有一列包含数字:
Value
-----
123
452
021
111
...
Run Code Online (Sandbox Code Playgroud)
我想得到每个值的数字之和。
答案应该看起来像
Value SumValue
----- --------
123 6
452 11
021 3
111 3
... ...
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我试过这个:
select value
, case
when len(value) = 2 then convert(int, left(value, 1))
+ convert(int, right(value, 1))
when len(value) = 3 then convert(int, substring(convert(varchar(1), value), 1,1))
+ convert(int, substring(convert(varchar(1), value), 2,1))
+ convert(int, substring(convert(varchar(1), value), 3,1))
else value
end as SumNum
from get_number (000, 999);
Run Code Online (Sandbox Code Playgroud)
当我达到三位数时,它无法正确计算,在我看来必须有更好的解决方案。