【问题标题】:Cannot find the object 'TABLE" because it does not exist or you do not have permissions找不到对象“表”,因为它不存在或您没有权限
【发布时间】:2017-03-19 12:18:06
【问题描述】:

我遇到了一个问题,我想将一列添加到使用派生表的表中。我最终希望能够使用 while 循环填充此列。但是,当我将列添加到表中时,出现以下错误:找不到对象“TEST”,因为它不存在或您没有权限。我有权限,但我不明白为什么在没有添加“ALTER TABLE TEST ADD THEMEVALUE INT(50)”行项目的情况下脚本执行时提示错误。

以下是我的代码:

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

【问题讨论】:

    标签: sql-server permissions subquery multiple-columns


    【解决方案1】:

    没有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] 
    

    【讨论】:

      猜你喜欢
      • 2016-11-22
      • 2015-05-27
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      • 2013-04-09
      相关资源
      最近更新 更多