piątek, 29 stycznia 2016

Liczenie w SQL Server za pomocą CTE i ROW_NUMBER

Czasami proste rzeczy są lepsze, ale żeby te proste rzeczy znaleźć to potrzeba czasu.
Aby policzyć od 1 do 10000 to będziemy mogli wykorzystać pseudorekurencja, która opisałem wcześniej na blogu.
with cte (row)
 as (
SELECT 1
UNION all
SELECT c.row+1 FROM cte c
where c.row < 10000

 )
 select * from cte
 OPTION (MAXRECURSION 10000)
Ale wykorzystanie funkcji ROW_NUMBER jest dużo lepszym sposobem:
SELECT TOP (10000) ROW_NUMBER() OVER (ORDER BY s1.[object_id]) as row
FROM sys.all_objects AS s1 
CROSS JOIN sys.all_objects AS s2​

Brak komentarzy:

Prześlij komentarz