sql >> データベース >  >> RDS >> Sqlserver

各行の列値に基づいて行を複製する

    これにより、(私のシステム上の)個々のジョブに対して7,400回を超える繰り返しがサポートされます。さらに必要な場合は、別のシステムテーブルまたは相互結合を使用できます。

    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. SQL ServerでJOINを使用してテーブルを更新しますか?

    2. Oracleでの<>の意味

    3. SQLSTATE[HY000][2002]接続に失敗しました。-ローカルサーバーからリモートサーバーに接続しようとしたとき

    4. Oracleでテーブルのインデックスを見つける方法