Как объединить использование в SQL Server - PullRequest
1 голос
/ 06 июля 2010

У меня есть таблица, где данные похожи на

Data 

 a 
 b 
 c 

Мне нужно написать запрос SQL, чтобы получить следующий вывод

Data 

abc 

Как сделать то же самое с использованием в SQL Server 2000 Спасибо

1 Ответ

1 голос
/ 06 июля 2010

Я не знаю, как / если это можно сделать с помощью XML RAW. Этот подход работает в SQL2000, хотя.

DECLARE @Data varchar(8000)
set @Data =''
select @Data = @Data + Data
FROM @t 
ORDER BY Data

SELECT @Data

Редактировать О, я только что видел ваш другой вопрос, где Кейд дал вам ссылку. Разве ответ КМ по этой ссылке не работает для вас?

тестовый запрос KM

--combine parent and child, children are CSV onto parent row
CREATE TABLE #TableA (RowID int, Value1 varchar(5), Value2 varchar(5))
INSERT INTO #TableA VALUES (1,'aaaaa','A')
INSERT INTO #TableA VALUES (2,'bbbbb','B')
INSERT INTO #TableA VALUES (3,'ccccc','C')

CREATE TABLE #TableB (RowID int, TypeOf varchar(10))
INSERT INTO #TableB VALUES (1,'wood')
INSERT INTO #TableB VALUES (2,'wood')
INSERT INTO #TableB VALUES (2,'steel')
INSERT INTO #TableB VALUES (2,'rock')
INSERT INTO #TableB VALUES (3,'plastic')
INSERT INTO #TableB VALUES (3,'paper')

SELECT
    a.*,dt.CombinedValue
    FROM #TableA        a
        LEFT OUTER JOIN (SELECT
                             c1.RowID
                                 ,STUFF(REPLACE(REPLACE(
                                          (SELECT 
                                               ', ' + TypeOf as value
                                               FROM (SELECT
                                                         a.RowID,a.Value1,a.Value2,b.TypeOf
                                                         FROM #TableA                 a
                                                             LEFT OUTER JOIN #TableB  b ON a.RowID=b.RowID
                                                    ) c2
                                               WHERE c2.rowid=c1.rowid
                                               ORDER BY c1.RowID, TypeOf
                                               FOR XML RAW
                                          )
                                         ,'<row value="',''),'"/>','')
                                   , 1, 2, '') AS CombinedValue
                             FROM (SELECT
                                       a.RowID,a.Value1,a.Value2,b.TypeOf
                                       FROM #TableA                 a
                                           LEFT OUTER JOIN #TableB  b ON a.RowID=b.RowID
                                  ) c1
                             GROUP BY RowID
                        ) dt ON a.RowID=dt.RowID
...