2014-10-11 75 views
0

我正在使用存儲過程來獲取結果。如何組合兩個存儲過程

我的要求是將兩個sp結果合併到一個表中。

第一存儲過程是:

EXEC spDisplayBankConsolidate 'pname',@yr=2013 

返回這些結果:

Bankcode  Amt 
Cash  13867.00 
Csb   21598.50 
Fd   700990.00 

第二存儲過程被稱爲是這樣的:

EXEC spDisplayBankConsolidate 'pname', @yr=2013, @equal='Eq'` 

結果:

Bankcode  Amt 
Cash  13867.00 
Csb   5598.50 
Fd  1138049.00 

我的要求是,以結果如下

Bankcode Opening  Closing 
Cash   13867.00  13867.00 
Csb   21598.50   5598.50 
Fd   700990.00  1138049.00 
+1

你正在使用什麼類型的SQL? MySQL的? SQL Server? – Jeff 2014-10-11 05:40:29

+0

@Jeff SQL Server – 2014-10-11 05:45:44

+3

將結果插入到tmp表中,然後加入它們。 – 2014-10-11 05:47:01

回答

1

創建兩個臨時表(或表變量),插入到這些,就加入他們基於共同的領域結合(Bankcode

像對此,我認爲:

create table #TableOne (BankCode nvarchar, Amt money) 
create table #TableTwo (BankCode nvarchar, Amt money) 

INSERT INTO #TableOne EXEC spDisplayBankConsolidate 'pname',@yr=2013 
INSERT INTO #TableOne EXEC spDisplayBankConsolidate 'pname',@yr=2013,@equal='Eq' 

select 
    t1.BankCode, 
    t1.Amt as Opening, 
    t2.Amt as Closing 
from #TableOne t1 
inner join #TableTwo t2 on t1.BankCode = t2.BankCode 

我提出此基礎上對這個問題的答案:https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d400a970-e0db-4324-9e99-9dfba214a55a/store-output-of-sql-server-exec-into-a-table?forum=transactsql

+0

我收到此錯誤 消息8152,級別16,狀態13,過程spDisplayBankConsolidate,第6行 字符串或二進制數據將被截斷。 – 2014-10-11 05:59:31

+0

噢,你需要根據你的源列指定一個更大的'nvarchar'。我的意思是,'(BankCode nvarchar(max)...'可以工作,但你可能想要正確地做到這一點 – Jeff 2014-10-11 06:00:58

+0

感謝它的工作很好... – 2014-10-11 06:10:04