WITH CTE (rowNum,Value,Level) AS( SELECT ROW_NUMBER() OVER (ORDER BY ID DESC) as rowNum, Value 0 as Level FROM Mytable WHERE ID = (SELECT MIN(ID) FROM Mytable) UNION ALL SELECT ROW_NUMBER() OVER (ORDER BY ID DESC) as rowNum, Value Level + 1 FROM Mytable a INNER JOIN CTE b ON b.rowNum <= a.rowNum + 1 --a.rowNum are not allowed here )SELECT rowNum, SUM(Value)FROM CTEGROUP BY LEVEL, rowNum
DECLARE @factorial VARCHAR(255) SET @factorial = '' CREATE TABLE #temp ( id INT, value VARCHAR(255) ) INSERT INTO #temp (id, value) SELECT 1, '19' UNION SELECT 2, '90' UNION SELECT 3, '20' UNION SELECT 4, '8' UNION SELECT 5, '9' UPDATE #temp SET @factorial = value = ( CASE WHEN @factorial <> '' THEN @factorial + ' + ' ELSE @factorial END ) + value SELECT * FROM #temp DROP TABLE #temp
SELECT * INTO #MyTableFROM (VALUES(1,19), (2,90), (3,20), (4,8), (5, 9)) AS M(ID, VALUE)-- triangular joinselect ID , VALUE , ( SELECT SUM(VALUE) FROM #MyTable b WHERE b.ID <= a.ID ) AS RUNNING_TOTALFROM #MyTable a-- quirky updateALTER TABLE #MyTable ADD CONSTRAINT mt_pk PRIMARY KEY (ID)ALTER TABLE #MyTable ADD RUNNING_TOTAL INTALTER TABLE #MyTable ADD RUNNING_CALC VARCHAR(100)DECLARE @runningTotal int = 0DECLARE @runningCalc varchar(100) = nullUPDATE #MyTableSET @runningTotal = RUNNING_TOTAL = @runningTotal + VALUE ,@runningCalc = RUNNING_CALC = isnull(@runningCalc + ' + ','') + CAST(VALUE AS VARCHAR(10))SELECT * FROM #MyTableDROP TABLE #MyTable
CREATE TABLE #temp ( id INT, value NVARCHAR(255) ) INSERT INTO #temp (id,value) SELECT 1, '19' INSERT INTO #temp (id,value) SELECT 2, '90' INSERT INTO #temp (id,value) SELECT 3, '20' INSERT INTO #temp (id,value) SELECT 4, '8' INSERT INTO #temp (id,value) SELECT 5, '9' with cte as (select id, value from #temp where id =1 union all select t.id, convert (nvarchar(255),c.value+'+'+t.value) from #temp t inner join cte c on c.id= (t.id-1)) select * from cte
/*ID | Value---------1 | 192 | 903 | 204 | 85 | 9*/DECLARE @valuestab TABLE (ID INT,VALUE INT)INSERT INTO @valuestab ( ID, VALUE )VALUES ( 1,19 ),(2,90),(3,20),(4,8),(5,9); WITH CTE (ID,Value) AS( SELECT ID, Value FROM @valuestab UNION ALL SELECT a.id, a.Value + b.Value FROM @valuestab a INNER JOIN CTE b ON b.ID +1 = a.ID )SELECT ID, MAX(Value) AS ValueFROM CTEGROUP BY ID
WITH CTE (ID,Value) AS( SELECT ID, Value FROM @valuestab WHERE ID = (SELECT MIN(ID) FROM @valuestab) --I guess you forget this line UNION ALL