Tsql 所有数字的总和归结为一个数字

Tsql 所有数字的总和归结为一个数字,tsql,Tsql,我有一张桌子 numbers 794 709090 我需要的是所有数字的总和,比如7+9+4=20;2+0=2或7+0+9+0+9+0=25;2+5=7 我尝试了以下脚本,但不知何故无法正常工作: declare @t table(numbers int) insert into @t select 794 union all select 709090 declare @maxValue int select @maxValue = max(numbers) from @t ;with

我有一张桌子

numbers
794
709090
我需要的是所有数字的总和,比如7+9+4=20;2+0=2或7+0+9+0+9+0=25;2+5=7

我尝试了以下脚本,但不知何故无法正常工作:

declare @t table(numbers int)
insert into @t select 794 union all select 709090

declare @maxValue int
select @maxValue = max(numbers) from @t

;with cte as(
SELECT SUM(CAST(SUBSTRING(cast(numbers as varchar(1000)),number,1) AS INT)) SUMOFDIGITS FROM @t 

cross apply ( 
SELECT DISTINCT number FROM
MASTER..SPT_VALUES WHERE number > 0 AND number <= DATALENGTH(@maxValue) ) x)

select SUMOFDIGITS, finalsum = cast(left(SUMOFDIGITS,1) as int)+cast(right(SUMOFDIGITS,1) as int)
from cte

关于它的背景知识,请参阅维基百科上的文章。虽然这个答案中的代码似乎是正确的,但它缺乏对其工作原理的解释。@jeroemostert提供的链接似乎解释得很好,你可能想把它添加到你的问题中,并复制它的部分内容作为引语,以使这个答案非常好。
DECLARE @a int = 709090
select   (@a - 1) % 9 + 1