I would like to create a recursive view in Teradata (i.e. CREATE RECURSIVE VIEW ) from the following reproducible example:
CREATE VOLATILE TABLE vt1 ( foo VARCHAR(10) , counter INTEGER , bar INTEGER ) ON COMMIT PRESERVE ROWS; INSERT INTO vt1 VALUES ('a', 1, '1'); INSERT INTO vt1 VALUES ('a', 2, '2'); INSERT INTO vt1 VALUES ('a', 3, '2'); INSERT INTO vt1 VALUES ('a', 4, '4'); INSERT INTO vt1 VALUES ('a', 5, '1'); INSERT INTO vt1 VALUES ('b', 1, '3'); INSERT INTO vt1 VALUES ('b', 2, '1'); INSERT INTO vt1 VALUES ('b', 3, '1'); INSERT INTO vt1 VALUES ('b', 4, '2'); WITH RECURSIVE cte (foo, counter, bar, rsum) AS ( SELECT foo , counter , bar , bar AS rsum FROM vt1 QUALIFY ROW_NUMBER() OVER (PARTITION BY foo ORDER BY counter) = 1 UNION ALL SELECT t.foo , t.counter , t.bar , CASE WHEN cte.rsum < 3 THEN t.bar + cte.rsum ELSE t.bar END FROM vt1 t JOIN cte ON t.foo = cte.foo AND t.counter = cte.counter + 1 ) SELECT cte.* , CASE WHEN rsum < 5 THEN 0 ELSE 1 END AS tester FROM cte ORDER BY foo , counter ;
This creates this conclusion:
βββββββ¦ββββββββββ¦ββββββ¦βββββββ¦βββββββββ β foo β counter β bar β rsum β tester β β ββββββ¬ββββββββββ¬ββββββ¬βββββββ¬βββββββββ£ β a β 1 β 1 β 1 β 0 β β a β 2 β 2 β 3 β 0 β β a β 3 β 2 β 5 β 1 β β a β 4 β 4 β 4 β 0 β β a β 5 β 1 β 5 β 1 β β b β 1 β 3 β 3 β 0 β β b β 2 β 1 β 4 β 0 β β b β 3 β 1 β 5 β 1 β β b β 4 β 2 β 2 β 0 β βββββββ©ββββββββββ©ββββββ©βββββββ©βββββββββ
What I ultimately would like to βsaveβ as a view. I tried CREATE RECURSIVE VIEW and several options, but I think I donβt understand how to get around the WITH RECURSIVE cte .
For the question of what is happening, see this question.
sql recursion view recursive-query teradata
Jasonaizkalns
source share