Search code examples
sqlmysqlsql-cte

SQL-CTE reqursive query with scope


I have table GetTicketNumbers

   i    UID                                 TicketNumber
   2    09901a22c7c3acc6786847c775f1d113    10
   6    00dad28bef21f916240d6e8c1c1bd67d    5
  12    00dad28bef21f916240d6e8c1c1bd67d    20

I need to produced 35 rows (UID also must be present in result, because this is only one table and this table need to join on upper layer)

             10 sequence number started from 1 (row i=2)
  than next   5  sequence number               (row i=6)
  than next  20 sequence number                (row i=12)

I need something like this, but not complete this query

 With RECURSIVE cte (i, UID, TicketNumbers) as
 (
     Select i, UID, TicketNumbers from GetTicketNumbers 
     union all
     Select i + 1, UID, TicketNumbers from cte where ?????
 ) select * from cte order by i;

I use MySQL.


Solution

  • Add RowNo + 1 until RowNo reaches TicketNumber

    WITH RECURSIVE CTE AS (
        SELECT i, UID, TicketNumber, 1 AS RowNo FROM TicketData
        UNION ALL
        SELECT i, UID, TicketNumber, RowNo+1 
        FROM CTE c
        WHERE RowNo < TicketNumber
    )
    SELECT *, ROW_NUMBER() OVER (ORDER BY i,RowNo) as TotalRowNumber
    FROM CTE;
    

    db<>fiddle