sql >> Databáze >  >> RDS >> Sqlserver

SQL funkce - faktoriál

Nerekurzivní způsob

;With Nums As
(
select ROW_NUMBER() OVER (ORDER BY (SELECT 0)) AS RN
FROM sys.objects
)
SELECT  POWER(10.0, SUM(LOG10(RN)))
FROM Nums
WHERE RN <= 10

A rekurzivní způsob

declare @target int
set @target=10;

WITH N AS
     (SELECT 1 AS i,
           1 AS f

     UNION ALL

     SELECT i+1,
            f*(i+1)
     FROM   N
     WHERE  i < @target
     )
SELECT f FROM N
WHERE [email protected]


  1. Přidání omezení pomocí poddotazu z jiné tabulky

  2. Jak záměrně vytvořit dlouhotrvající dotaz MySQL

  3. intervalová funkce v orákulu

  4. SQL rozdělený hexastring na různé bajty