2012-11-20 72 views
-1

可能重複:
Concatenate many rows into a single text string?SQL Server 2008的T-SQL - 插入多個記錄ID爲VARCHAR列如CSV

我在SQL Server 2008數據庫2個表 - tblQuestion和tblSummary 。我從tblQuestion中選擇QuestionID,如下所示。

SELECT QuestionId from tblQuestion WHERE Status='Completed'; 

的結果如下(從多個記錄),

QuestionId 
---------- 
1 
2 
5 
7 
8 
9 

[6 rows] 

現在,我需要插入選定的ID以上爲 「CompletedSections」 列(這是VARCHAR型)tblSummary。它應該以CSV格式插入 - 1,2,5,7,8,9

例如,如果我從tblSummary中選擇那些將如下。

SELECT CompletedSections FROM tblSummary WHERE <Some Condition> 

的結果應該是,

CompletedSections 
----------------- 
1,2,5,7,8,9 

[1 row] 

這怎麼可以使用T-SQL(不使用任何編程語言,如C#)數據庫級別做什麼?我希望用t-SQL使用預定的SQL SP/Function/Trigger來實現這一點。

感謝,

Chatur

+4

爲什麼哦,你爲什麼要把它們存儲爲CSV?這就像把所有的碗,叉子和眼鏡扔在一個抽屜裏。 –

+0

看到下面的鏈接,這樣類似的事情 http://stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single-text-string –

回答

2

Here是我以前用過的解決方案。這是一個小黑客,但它應該比使用光標創建CSV更快。以下是一些示例代碼,以幫助您入門。

DECLARE @tblQuestion TABLE 
(
    QuestionId nvarchar(10) 
) 

DECLARE @tblSummary TABLE 
(
    CompletedSections nvarchar(100) 
) 

INSERT INTO @tblQuestion 
VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9) 

INSERT INTO @tblSummary 
SELECT SUBSTRING(
(SELECT ',' + QuestionId 
from @tblQuestion 
FOR XML PATH('')),2,200000) AS CSV 

SELECT * FROM @tblSummary 
+0

謝謝...它的工作原理! – chatura

-2
DECLARE @STRING VARCHAR(MAX) = '' 
    DECLARE @VALUE VARCHAR(MAX) 

    DECLARE A_CURSOR CURSOR FOR 
    SELECT QuestionId from tblQuestion WHERE Status='Completed' 

    OPEN A_CURSOR 
    FETCH A_CURSOR INTO @VALUE 

    WHILE @@FETCH_STATUS = 0 
    BEGIN 

    if @STRING <> '' 
    set @STRING = @STRING + ', ' 

    set @STRING = @STRING + CONVERT(VARCHAR(MAX),@VALUE) 

    FETCH A_CURSOR INTO @VALUE 

    END 

    CLOSE A_CURSOR 

    DEALLOCATE A_CURSOR 

    INSERT INTO CompletedSection (tblSummary) SELECT @STRING 
+1

不要使用遊標這一點,可以以基於集合的方式解決。 – HLGEM

+0

好的,很好學習somethign新的,謝謝你的缺點 – rufu5

1

這將做的工作;

DECLARE @S VARCHAR(5000) 

SELECT @S=ISNULL(@S+ ',', '') + CONVERT(VARCHAR(10),QuestionId) 
FROM tblQuestion 

SELECT @S 
+0

謝謝...這也OK ... – chatura

相關問題