Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL server中添加临时表_Sql_Sql Server_Temp Tables - Fatal编程技术网

如何在SQL server中添加临时表

如何在SQL server中添加临时表,sql,sql-server,temp-tables,Sql,Sql Server,Temp Tables,我正在尝试向我的查询中添加一个临时表,以便我可以查询该临时表,我已经在互联网上搜索过,但我无法找到解决方案。 这是我的问题 ;WITH cte AS ( SELECT ID, g.Name FROM game.Game g WITH(NOLOCK WHERE ID IN (SELECT Data FROM system.Split(1, ',')) UNION ALL SELECT g.ID, g.Name

我正在尝试向我的查询中添加一个临时表,以便我可以查询该临时表,我已经在互联网上搜索过,但我无法找到解决方案。 这是我的问题

;WITH cte AS (
        SELECT ID, g.Name
        FROM game.Game g WITH(NOLOCK
        WHERE ID IN (SELECT Data FROM system.Split(1, ','))
        UNION ALL 
        SELECT g.ID,  g.Name
        FROM game.Game g WITH(NOLOCK) 
            JOIN cte ON g.ParentID = cte.ID
    )

    SELECT  c.ID,
        c.Name

    FROM cte c
        INNER JOIN list.Type gt WITH(NOLOCK) ON c.TypeId = gt.TypeID

    WHERE c.ID NOT IN (SELECT Data FROM system.Split(1, ','))
        AND c.ID IN (SELECT ID FROM game.code WITH(NOLOCK)
        WHERE ID = c.ID
            AND StatusCode IN ('OP', 'CL', 'SU')
            AND isDisplay = 'True' 
            AND GETDATE() BETWEEN DisplayStart AND DisplayEnd
            AND GETDATE() < ISNULL(ResultDateTime, ResultExpected) 
        )
现在我尝试创建一个临时表,如下所示

Create Table #temp(
        ID int,
        Name varchar
        )
        ;WITH cte AS (
        SELECT ID, g.Name
        FROM game.Game g WITH(NOLOCK)
        WHERE ID IN (SELECT Data FROM system.Split(1, ','))
        UNION ALL 
        SELECT g.ID,  g.Name
        FROM game.Game g WITH(NOLOCK) 
            JOIN cte ON g.ParentID = cte.ID
    )
    insert into #temp  // i wanted to set these values in the temp table
    SELECT  c.ID,
        c.Name

    FROM cte c
        INNER JOIN list.Type gt WITH(NOLOCK) ON c.TypeId = gt.TypeID

    WHERE c.ID NOT IN (SELECT Data FROM system.Split(1, ','))
        AND c.ID IN (SELECT ID FROM game.code WITH(NOLOCK)
        WHERE ID = c.ID
            AND StatusCode IN ('OP', 'CL', 'SU')
            AND isDisplay = 'True' 
            AND GETDATE() BETWEEN DisplayStart AND DisplayEnd
            AND GETDATE() < ISNULL(ResultDateTime, ResultExpected) 
        )
每次我尝试在临时表中存储此信息时,它都会给我一个错误“提供的值的列名或数量与表定义不匹配”。但我在临时表中只有两个值。我做错了什么,我看不见?

首先,为什么不直接使用选择进入

然后您不需要将temp定义为表

其次,您的定义是错误的,因为名称只有一个字符。这将用select into修复

然而,我不知道你为什么会犯这样的错误。列的数量似乎匹配。

首先,为什么不直接使用select into

然后您不需要将temp定义为表

其次,您的定义是错误的,因为名称只有一个字符。这将用select into修复


然而,我不知道你为什么会犯这样的错误。列数似乎匹配。

为什么要使用NOLOCK?临时表u中varchar列的长度是多少?要展开和@Larnu的注释。。。你有一个名为1的列吗?那个拆分函数在我看来很可疑。你们为什么要使用NOLOCK?你们给出的Temp表中varchar列的长度是多少?为了展开和@Larnu的注释。。。你有一个名为1的列吗?该拆分函数在我看来非常可疑。请注意,在同一会话中执行此函数时,它将抛出错误。请注意,在同一会话中执行此函数时,它将抛出错误。
Create Table #temp(
        ID int,
        Name varchar
        )
        ;WITH cte AS (
        SELECT ID, g.Name
        FROM game.Game g WITH(NOLOCK)
        WHERE ID IN (SELECT Data FROM system.Split(1, ','))
        UNION ALL 
        SELECT g.ID,  g.Name
        FROM game.Game g WITH(NOLOCK) 
            JOIN cte ON g.ParentID = cte.ID
    )
    insert into #temp  // i wanted to set these values in the temp table
    SELECT  c.ID,
        c.Name

    FROM cte c
        INNER JOIN list.Type gt WITH(NOLOCK) ON c.TypeId = gt.TypeID

    WHERE c.ID NOT IN (SELECT Data FROM system.Split(1, ','))
        AND c.ID IN (SELECT ID FROM game.code WITH(NOLOCK)
        WHERE ID = c.ID
            AND StatusCode IN ('OP', 'CL', 'SU')
            AND isDisplay = 'True' 
            AND GETDATE() BETWEEN DisplayStart AND DisplayEnd
            AND GETDATE() < ISNULL(ResultDateTime, ResultExpected) 
        )
IF OBJECT_ID('TempDB..#temp') IS NOT NULL  
BEGIN
    DROP TABLE #temp
END
select c.ID, c.Name
into #temp
from . . .