2016-11-05 16 views
0

派生テーブルを使用するテーブルに列を追加する問題が発生しています。この列はwhileループを使用していますが、テーブルに列を追加すると次のエラーが表示されます:オブジェクトが存在しないか、アクセス権がないため「TEST」オブジェクトが見つかりません。スクリプトは、「ALTER TABLEのTEST THEMEVALUE INT(50)を追加し、」行項目を追加することなく、エラーなしで実行したとき、私はエラーが表示されていますなぜ理解オブジェクト 'TABLE'が存在しないか、アクセス権がないために見つかりません

を次は私のコードです:。

DECLARE @weeksPriorToConversion INT 
DECLARE @periodenddate VARCHAR(50) 

SET @weeksPriorToConversion = 5 
SET @periodenddate = '2016-10-26' 

SELECT TEST.[Casino] 
FROM (SELECT C.Casino          AS 'Casino', 
       TML.ID           AS 'ID', 
       TML.[Themes or Game Titles]     AS 'Theme', 
       COUNT(DISTINCT SM.[Serial Number])    AS 'Title Count', 
       SUM(SMD.[StandardizedCasinoHoldv2])/SUM(CASE 
                  WHEN SMD.[StandardizedCasinoHoldv2] <> 0 
                  THEN 7 
                  ELSE NULL 
                 END) AS 'Casino Index' 
     FROM [slot machine data] SMD 
       INNER JOIN [slot machines] SM 
       ON SM .ID = SMD.[serial number] 
       INNER JOIN [slot machine configurations] SMC 
       ON SM .ID = SMC.[serial number] 
        AND SMC. [Configuration Starting Date] = (SELECT MAX([Configuration Starting Date]) AS Expr1 
                   FROM [Slot Machine Configurations] AS SMC2 
                   WHERE ([Serial Number] = SM.ID) 
                    AND ([Configuration Starting Date] <= SMD.[data calendar start date])) 
       INNER JOIN [casino] C 
       ON C .ID = SMC.[casino where slot in operation] 
       INNER JOIN [Themes Master List] TML 
       ON TML.ID = SMC.[Theme or Game Title]) AS TEST 

ALTER TABLE TEST 
    ADD THEMEVALUE INT(50); 

答えて

0

INT(50)データ型がなく、派生テーブルに列を追加することはできません。派生テーブルは、クエリ内の論理テーブル式をカプセル化するだけです。実際のテーブルは作成しません。

おそらく#tempテーブルが必要です。 SELECT ... INTOで作成することができます。

以下は、#testと呼ばれるものを作成します。選択リストにはTHEMEVALUE列が含まれているため、これを個別に追加する必要はありません。

SELECT C.Casino          AS [Casino], 
     TML.ID           AS [ID], 
     TML.[Themes or Game Titles]     AS [Theme], 
     COUNT(DISTINCT SM.[Serial Number])    AS [Title Count], 
     SUM(SMD.[StandardizedCasinoHoldv2])/SUM(CASE 
                WHEN SMD.[StandardizedCasinoHoldv2] <> 0 
                THEN 7 
                ELSE NULL 
               END) AS [Casino Index], 
     CAST(NULL AS INT)        AS THEMEVALUE 
INTO #test 
FROM [slot machine data] SMD 
     INNER JOIN [slot machines] SM 
     ON SM .ID = SMD.[serial number] 
     INNER JOIN [slot machine configurations] SMC 
     ON SM .ID = SMC.[serial number] 
      AND SMC. [Configuration Starting Date] = (SELECT MAX([Configuration Starting Date]) AS Expr1 
                 FROM [Slot Machine Configurations] AS SMC2 
                 WHERE ([Serial Number] = SM.ID) 
                  AND ([Configuration Starting Date] <= SMD.[data calendar start date])) 
     INNER JOIN [casino] C 
     ON C .ID = SMC.[casino where slot in operation] 
     INNER JOIN [Themes Master List] TML 
     ON TML.ID = SMC.[Theme or Game Title] 
関連する問題