SQL Server-将动态查询和变量的结果插入临时表的同一行

时间:2014-07-30 17:51:09

标签: sql-server

如何将动态SQL Server查询和变量的结果插入临时表的同一行。

这是临时表(#temp)的格式

create TABLE #temp (YEAR INT, ACC_AMOUNT Money, REJ_AMOUNT Money,  OUT_AMOUNT Money,TOT_AMOUNT   Money)

存储的PROC由

执行
exec  sp_executesql @pSQL

并返回应该进入ACC_AMOUNT,REJ_AMOUNT,OUT_AMOUNT列的值。

14569849.11           696235.49             1353464.92            16619549.52

我想为Year插入一个变量(@pACCU_YEAR)和SP的结果,并在同一行中插入dyanmic查询。这是错误的,但这会让你知道我的意思。

insert into #temp (YEAR)
values (@pACCU_YEAR)

insert into #temp (ACC_AMOUNT , REJ_AMOUNT,  OUT_AMOUNT,TOT_AMOUNT)
exec  sp_executesql @pSQL

这将导致

YEAR        ACC_AMOUNT            REJ_AMOUNT            OUT_AMOUNT            TOT_AMOUNT
2014        NULL                  NULL                  NULL                  NULL
NULL        14569849.11           696235.49             1353464.92            16619549.52

我想:

YEAR        ACC_AMOUNT            REJ_AMOUNT            OUT_AMOUNT            TOT_AMOUNT
2014        14569849.11           696235.49             1353464.92            16619549.52

2 个答案:

答案 0 :(得分:2)

Select @Year [Year]
    ,Acc_Amount
    ,other fields....
FROM #Temp

回答你评论中提出的问题。

运行@pSql后使用此选项。将年份列离声明。

或者,在它运行之后:

update #temp
SET [Year]=@Year

答案 1 :(得分:1)

@pSQL内的代码是什么?为什么不在动态查询中执行INSERT,如

declare @pSQL varchar(max);

set @pSQL = 'some sql command;
some_other_sql_command;
.......

insert into #temp (ACC_AMOUNT , REJ_AMOUNT,  OUT_AMOUNT,TOT_AMOUNT)
select blah,blah1,blah2,blah3
from blah_table;';


exec  sp_executesql @pSQL;
  

你能告诉我一个如何选择一个列的例子   变量不在表格内?

使用与

相同的SELECT语句
select @var1 as some_name, @var2 as some_other_name

as some_name是可选的。这是为所选字段提供有意义的名称。