I have a table like
ColumnA | ColumnB | ColumnC |
---|---|---|
ABC | TextA | 3 |
EFG | TextB | 1 |
EFG | TextC | 2 |
How do I write a SELECT statement that will return the # of rows for ColumnA and ColumnB based on the values of ColumnC
Expect results:
ColumnA | ColumnB |
---|---|
ABC | TextA |
ABC | TextA |
ABC | TextA |
EFG | TextB |
EFG | TextC |
EFG | TextC |
Advertisement
Answer
You can use a recursive cte
:
with recursive cte(a, b, c) as ( select cola, colb, colc - 1 from t union all select a, b, c - 1 from cte where c > 0 ) select a, b from cte order by a;