sql >> Database >  >> RDS >> Sqlserver

Rijen dupliceren op basis van een kolomwaarde in elke rij

Dit ondersteunt meer dan 7.400 herhalingen voor elke individuele taak (op mijn systeem). Als je meer nodig hebt, kun je een andere systeemtabel of een cross-join gebruiken.

DECLARE @d TABLE (Job INT, Quantity INT, Status VARCHAR(12), Repeat INT);

INSERT @d SELECT 1, 100, 'OK'  ,2
UNION ALL SELECT 2, 400, 'HOLD',0
UNION ALL SELECT 3, 200, 'HOLD',1
UNION ALL SELECT 4, 450, 'OK'  ,3;

WITH x AS 
(
  SELECT TOP (SELECT MAX(Repeat)+1 FROM @d) rn = ROW_NUMBER() 
  OVER (ORDER BY [object_id]) 
  FROM sys.all_columns 
  ORDER BY [object_id]
)
SELECT * FROM x
CROSS JOIN @d AS d
WHERE x.rn <= d.Repeat + 1
ORDER BY Job;


  1. Leg uit Plan Kosten Pijnpunt

  2. Retourneer rijen van INSERT met ON CONFLICT zonder te updaten

  3. Post en ontvang tegelijkertijd in php

  4. Waarom retourneert ISNUMERIC('.') 1?