簡體   English   中英

SQL Server-將來自動態查詢和變量的結果插入到臨時表的同一行中

[英]SQL Server- Insert results from dynamic query and variable into same row of a temporary table

如何將動態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和SP的結果插入變量(@pACCU_YEAR),並在同一行中插入動態查詢。 這是錯誤的,但這會讓您了解我的意思。

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
Select @Year [Year]
    ,Acc_Amount
    ,other fields....
FROM #Temp

針對您在評論中提出的問題。

在運行@pSql之后使用它。 將“年份”列保留在聲明之外。

或者,在它運行之后:

update #temp
SET [Year]=@Year

@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是可選的。 那就是給選定的字段起一個有意義的名字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM