1

みんなおはよう

上司は、137万行のランダムデータを入力するクエリの設計を手伝ってくれました。彼は、結果を空白のテーブルに挿入/更新するように依頼しました。しかし、どういうわけか私はそれを動作させることができません。

3つの列は、ArrivalDate、PitchType_Skey、およびSite_Skeyです。しかし、クエリを実行すると(以下を参照)、エラーメッセージが表示され、理由がわかりません。手伝ってくれますか?

メッセージ121、レベル15、状態1、行2
INSERTステートメントの選択リストには、挿入リストよりも多くの項目が含まれています。SELECT値の数は、INSERT列の数と一致する必要があります。

クエリ:

USE Occupancy

INSERT INTO Bookings (ArrivalDate, Site_Skey, PitchType_Skey)
    SELECT        
       Time.Date, Site.Site_Skey, Site.SiteWeighting, PitchType.PitchType_Skey, 
       PitchType.PitchTypeWeighting, 
       RAND(checksum(NEWID())) * Site.SiteWeighting * PitchType.PitchTypeWeighting AS Expr1
    FROM            
       Capacity 
    INNER JOIN
       Site ON Capacity.Site_Skey = Site.Site_Skey 
    INNER JOIN
       PitchType ON Capacity.PitchType_Skey = PitchType.PitchType_Skey 
    INNER JOIN
       Time 
    INNER JOIN
       AGKey ON Time.ArrivalDayWeighting = AGKey.[Key] ON Capacity.StartDate <= Time.Date AND Capacity.EndDate >= Time.Date 
    CROSS JOIN
        (SELECT 0 AS col1
         UNION ALL
         SELECT 1 AS col1) AS aaav
    WHERE        
       (Time.CalendarYear = 2010) 
       AND (RAND(checksum(NEWID())) * Site.SiteWeighting * PitchType.PitchTypeWeighting >= 1.22)

ありがとう

ウェイン

4

2 に答える 2

2

エラーメッセージに答えが表示されます。リストには他にもアイテムがありますSELECT(6)

Time.Date
Site.Site_Skey
Site.SiteWeighting
PitchType.PitchType_Skey
PitchType.PitchTypeWeighting
RAND(checksum(NEWID())) * Site.SiteWeighting * PitchType.PitchTypeWeighting AS Expr1

INSERTリストにあるよりも(3)

ArrivalDate
Site_Skey
PitchType_Skey

リストからいくつかの列を削除するか、いくつSELECTかをリストに追加してくださいINSERT

テーブルの完全な構造を与えていないので、Bookingsこれを行う必要があると推測することしかできません

USE Occupancy
INSERT INTO Bookings
(
    ArrivalDate,
    Site_Skey,
    PitchType_Skey
)
SELECT
    Time.Date,
    Site.Site_Skey,
    PitchType.PitchType_Skey
FROM
    Capacity
    INNER JOIN Site ON Capacity.Site_Skey = Site.Site_Skey
    INNER JOIN PitchType ON Capacity.PitchType_Skey = PitchType.PitchType_Skey
    INNER JOIN Time
    INNER JOIN AGKey ON Time.ArrivalDayWeighting = AGKey.[Key] ON Capacity.StartDate <= Time.Date AND Capacity.EndDate >= Time.Date
    CROSS JOIN
    (
        SELECT 0 AS col1
        UNION ALL
        SELECT 1 AS col1
    ) AS aaav
WHERE
    Time.CalendarYear = 2010
    AND (RAND(checksum(NEWID())) * Site.SiteWeighting * PitchType.PitchTypeWeighting >= 1.22)
于 2013-02-19T09:36:39.550 に答える
0

解決策を見つけましたが、信じられないほど簡単でした。クエリ デザイナで不要なボックスのチェックを外しただけです。

于 2013-02-19T12:51:20.953 に答える