CREATE TABLE addnum ( id INT identity(1, 1) , val INT ) INSERT INTO addnum SELECT ABS(CAST(NEWID() AS BINARY (6)) % 1000) + 1 randomNumber GO 1000 SELECT * FROM addnum
; WITH cte AS (SELECT id, cast(val AS varchar(10)) val, len(val) leng FROM addnum), cte1 AS (SELECT substring(val,1,1) x, id, 1 num FROM cte UNION ALL SELECT Isnull(substring(cte.val,num+1,1),'0'), cte.id, num+1 FROM cte1 JOIN cte ON cte1.id=cte.id AND cte1.num<cte.leng) SELECT cte.val, cte.id, sum(cast(x AS int)) addition FROM cte1 JOIN cte ON cte.id=cte1.id GROUP BY cte.val, cte.id ORDER BY id
No comments:
Post a Comment