1

別のテーブルに挿入する各タイプのレコードの数を決定するためにいくつかの計算を行っているいくつかのテーブルがあります。たとえば、主なエンティティは郡、メンバー、プランです。計算を実行し終えると、次のようになります。

  • 25 の [County A] + [Plan 1] レコードをテーブルに挿入します
  • [County A] + [Plan 2] の 15 レコードをテーブルに挿入します。
  • [County A] + [Plan 3] の 10 レコードをテーブルに挿入する
  • [County A] + [Plan 4] の 15 レコードをテーブルに挿入する
  • 25 の [County A] + [Plan 5] レコードをテーブルに挿入します
  • 63 [County B] + [Plan 1] レコードをテーブルに挿入
  • 47 [County B] + [Plan 3] レコードをテーブルに挿入
  • 19 の [County B] + [Plan 4] レコードをテーブルに挿入します

INSERTS は次のようになります。

INSERT INTO Assign (ID, CountyID, PlanID)
VALUES (NEWID(), 'A', 1), (NEWID(), 'A', 1), ..., (NEWID(), 'A', 1) -- 25 times
INSERT INTO Assign (ID, CountyID, PlanID)
VALUES (NEWID(), 'A', 2), (NEWID(), 'A', 2), ..., (NEWID(), 'A', 2) -- 15 times

次のようなストアド プロシージャ内からこれらの INSERT ステートメントを作成する方法を探しています。

  • カーソルや while ループを使用しないでください
  • 個別の挿入は行わず、一括挿入アプローチが必要
  • CTE を使用していますか? (必須ではありませんが、誰が知っていますか)

この情報はすべて、次のように定義された一時テーブルに格納されます。

CREATE TABLE #holding (countyID CHAR(2), planID INT, perCountyPlan INT)

SELECT * FROM #holding ORDER BY countyID, planID
A  1  25
A  2  15
A  3  10
A  4  15
A  5  25
B  1  63
B  3  47
B  4  19
C .......
etc

#history テーブルのデータに基づいて INSERT を作成する方法はありますか?

4

1 に答える 1

1

perCountyPlan <= 2048をお持ちの場合は、これを試してください。それ以外の場合は、独自の番号テーブルを作成する必要があります

WITH num AS (
    SELECT number
    FROM master..spt_values WHERE type = 'P' 
)
INSERT INTO Assign (ID, CountyID, PlanID)
SELECT  NEWID(),h.countyID, h.planID
FROM    #holding h
INNER JOIN num n 
    ON n.number < h.perCountyPlan
于 2012-11-13T19:54:48.087 に答える