2013-02-12 14 views
0

多行運行SQL Server 2008的插入從源

我在做每次執行此查詢時間上的臨時表,並試圖找到一種方法如何添加多行,如果有更多的則是1線輸入。我有來自客戶的收據信息。

create table #temp (col1 varchar(100),col2 varchar(100),col3 varchar(100)) 

insert into #temp (col1, col2, col3)values('Store ID', '01', '') 
insert into #temp (col1, col2, col3)values('Product','Quantity','Amount') 
insert into #temp (col1, col2, col3)values 
(
    (select product from receipt where receiptnum = 1), 
    (select quantity from receipt where receiptnum = 1), 
    (select amount from receipt where receiptnum = 1), 
) 
select * from #temp 

給予我我的輸出(這是我的整個數據結構,但相同的概念只是讓我不淹沒代碼): enter image description here

我的問題是我怎麼能做到這一點,如果收據有超過1個產品,不知道未來。所有這些數據需要顯示的是收據編號和商店編號,所以我不知道要輸入的行數。

從環顧四周,似乎我將不得不使用光標,但我對光標的知識是沒有的。

回答

1

用下面的語句替換第三條插入語句會將所有記錄插入到select中返回的臨時表中。

insert into #temp 
select product, quality, amount from receipt where receiptnum = 1 
+0

我有多個插入來格式化它,就像你在圖片中看到的那樣,包括'Store ID','Register#'等設置值,然後它們後面的值從select查詢中得到輸入。使用你的插入給我: 子查詢返回多個值。這是當子查詢如下=,!=,<, <= , >,> =,或當子查詢用作表達不允許的。 ,因爲其他插入僅添加一行。否則,是的,這確實有效。 – JohnZ 2013-02-12 21:00:37

+0

我建議的陳述是隻替換你的第三個插入。 – 2013-02-12 21:08:26

+0

我做到了,但因爲所有其他插件而尖叫着我。我沒有編輯。您的查詢在任何其他插入中都沒有select語句。如果我只是將原始數據手動插入到它們中,則不會出現錯誤。 – JohnZ 2013-02-12 21:11:46