2016-11-05 4 views
0

Ich stoße auf ein Problem, bei dem ich eine Tabelle zu einer Tabelle hinzufügen möchte, die abgeleitete Tabellen verwendet Diese Spalte verwendet eine while-Schleife.Wenn ich jedoch die Spalte der Tabelle hinzufügen, erhalte ich den folgenden Fehler: Kann das Objekt "TEST" nicht finden, weil es nicht existiert oder Sie keine Berechtigungen haben. Ich habe die Berechtigungen, aber ich bin nicht warum Verstehen ich werden mit dem Fehler aufgefordert, wenn das Skript ohne Fehler ausgeführt, ohne dass die „ALTER TABLE TEST THEMEVALUE INT ADD (50)“ Position hinzugefügtDas Objekt 'TABLE' konnte nicht gefunden werden, da es nicht existiert oder Sie keine Berechtigungen haben

das folgende ist mein Code:.

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); 

Antwort

0

Es gibt keinen INT(50) Datentyp und Sie können keine Spalten zu abgeleiteten Tabellen hinzufügen. Abgeleitete Tabellen kapseln nur einen logischen Tabellenausdruck in einer Abfrage. Sie erstellen keine tatsächliche Tabelle.

Wahrscheinlich möchten Sie stattdessen eine Tabelle. Sie können einen mit SELECT ... INTO erstellen.

Die folgende erstellt eine namens #test. Die Auswahlliste enthält die THEMEVALUE-Spalte, so dass Sie diese nicht separat hinzufügen müssen.

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] 
Verwandte Themen