Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Дублиране на редове въз основа на стойност на колона във всеки ред

Това ще поддържа над 7400 повторения за всяка отделна работа (в моята система). Ако имате нужда от повече, можете да използвате друга системна таблица или кръстосано свързване.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какви са разликите между клъстериран и неклъстериран индекс?

  2. Как да съхранявате пароли в базата данни сигурно?

  3. Как да инсталирате sqlcmd &bcp на Ubuntu

  4. Как да разберете дали изчислената колона е детерминистична в SQL Server

  5. Как мога да съкратя дата и час в SQL Server?