sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan jag utöka en rad till resultatuppsättning med flera rader?

Du kan använda en rekursiv CTE:

;WITH CTE AS
(
    SELECT *
    FROM YourTable
    UNION ALL 
    SELECT id, pcs-1
    FROM CTE
    WHERE pcs-1 >= 1
)
SELECT *
FROM CTE
ORDER BY id, pcs
OPTION(MAXRECURSION 0)

Här är en demo för dig att prova.



  1. SQL Server dbo.sysdiagrams är en användartabell eller systemtabell

  2. SQL lagrad procedur som förhindrar att skriva null

  3. trunc och round-funktion i sql

  4. Använder Dapper och Postgresql - citext datatyp