Das SQL-Statement kann auch nicht funktionieren, da es nicht korrekt ist!

Counter ist eine Common Table Expression und keine Spalte. Der Spalten-Name ist VALUE.
Wenn Du das Statement wie folgt änderst, funktioniert es auch:

Code:
with counter (value) as (  values(1)
                         union all
                           select value + 1 from counter
                              where value < 20)
select * from counter ;
Im Übrigen stimmt das komplette Statement auch nicht. Wenn Du es jedoch wie folgt änderst, sollte es funktionieren. (Anstatt der Datei habe ich eine Dummy-Datei über eine Common Table Expression generiert, mit 4 Sätze und jeweils 2 Spalten, den Text und die Anzahl/Number)
Code:
with counter (value) as (  values(1)
                         union all
                           select value + 1 from counter
                              where value < 20),
     File (Text, Number) as (Values('ABC', 5),
                                   ('XXX', 3),
                                   ('YYY', 7),
                                   ('ZZZ', 1))                         
select Text, 1, a.*, b.* 
   from File a inner join Counter b on Number >= Value
   Order By Text;