2016-11-05 54 views
0

我遇到了一个问题,我想将列添加到使用派生表的表中,我最终希望能够填充但是,当我将列添加到表中时,出现以下错误:无法找到对象“TEST”,因为它不存在或者您没有权限。我有权限,但我没有理解为什么我正与错误提示时脚本没有错误执行没有“ALTER TABLE TEST ADD 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] 
相关问题