Sql 将具有多个结果的动态变量插入临时表

Sql 将具有多个结果的动态变量插入临时表,sql,sql-server,dynamic,temp-tables,Sql,Sql Server,Dynamic,Temp Tables,我想将动态变量中的多条记录插入临时表,但无法成功。无法使用INSERT获得成功。你知道怎么做吗 我得到以下错误:为变量赋值的SELECT语句不能与数据检索操作结合使用 代码的一部分: 问题是,您不能选择将某些列分配给变量,但不能将所有列都分配给变量。我不明白为什么要分配任何变量,但您也可以为@id和@email分配变量 如果您想创建一个临时表,为什么不这样做呢 SELECT [Date], [Id], [Email] INTO #temptest FROM (

我想将动态变量中的多条记录插入临时表,但无法成功。无法使用INSERT获得成功。你知道怎么做吗

我得到以下错误:为变量赋值的SELECT语句不能与数据检索操作结合使用

代码的一部分:


问题是,您不能选择将某些列分配给变量,但不能将所有列都分配给变量。我不明白为什么要分配任何变量,但您也可以为@id和@email分配变量

如果您想创建一个临时表,为什么不这样做呢

    SELECT [Date], [Id], [Email]
    INTO #temptest
    FROM (
        SELECT ROW_NUMBER() OVER (ORDER BY FI.Id ASC) AS RowNum, CONVERT(DATE, FormV.[DateUpdated])   AS  [Date], FI.Id AS [Id]
        FROM        FormI                           AS  FI
        INNER JOIN  FormV                           AS  FormV
        ON          FI.FormVId  = FormV.Id
        INNER JOIN  NavArt                              AS  NA
        ON          FI.ArtId        = NA.Id
        WHERE       FI.WorkShiftId      = 10 
        ) withRownNum
    WHERE RowNum = 1;

注意:例如,使用top编写子查询可能有更简单的方法,但这就是另一个问题的答案。

您不需要变量。试试这个:

CREATE TABLE #tempTest
(
    one DATE,
    two ID,
    three NVARCHAR(60)
)
INSERT INTO #tempTest
SELECT  Date, Id, Email 
FROM   (SELECT [Date], [Id], [Email]
        FROM (
            SELECT ROW_NUMBER() OVER (ORDER BY FI.Id ASC) AS 'RowNum', CONVERT(DATE, FormV.[DateUpdated])   AS  [Date], FI.Id AS [Id]
            FROM        FormI                           AS  FI
            INNER JOIN  FormV                           AS  FormV
            ON          FI.FormVId  = FormV.Id
            INNER JOIN  NavArt                              AS  NA
            ON          FI.ArtId        = NA.Id
            WHERE       FI.WorkShiftId      = 10 
            ) withRownNum
        WHERE RowNum = 1

    ) a

为什么要使用变量?。您可以插入到测试选择。。。
CREATE TABLE #tempTest
(
    one DATE,
    two ID,
    three NVARCHAR(60)
)
INSERT INTO #tempTest
SELECT  Date, Id, Email 
FROM   (SELECT [Date], [Id], [Email]
        FROM (
            SELECT ROW_NUMBER() OVER (ORDER BY FI.Id ASC) AS 'RowNum', CONVERT(DATE, FormV.[DateUpdated])   AS  [Date], FI.Id AS [Id]
            FROM        FormI                           AS  FI
            INNER JOIN  FormV                           AS  FormV
            ON          FI.FormVId  = FormV.Id
            INNER JOIN  NavArt                              AS  NA
            ON          FI.ArtId        = NA.Id
            WHERE       FI.WorkShiftId      = 10 
            ) withRownNum
        WHERE RowNum = 1

    ) a