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