2015-10-16 65 views
0

我有兩個表是這樣的:加入很多行到一個XML列

enter image description here

enter image description here

第一個生成的表列出了所有的演員/導演/其他和第二張表列出了所有的電影。我需要做的是將所有Person_ID和Name放在第二個表中的一列中,理想情況是通過連接和XML轉換。我知道如何將整個表格轉換爲XML,但是我不確定如何將它轉換爲十幾行,是迭代的方式嗎?有任何想法嗎?

+1

直視FOR XML PATH –

+0

我知道如何錶轉換的XML PATH了,但這種情況比較複雜一點。 –

回答

1

如果您使用FOR XML PATH('')它消除了根標籤。如果您不指定列別名,它將僅輸出該值。因此,您可以在子查詢中創建一個值作爲列值之一。像這樣的東西應該讓你開始:

create table #Cast (FilmID int, Person_ID int, PersonName varchar(20)) 
create table #Films (FilmID int , FilmName varchar(20)) 

insert into #Cast values (1, 1, 'bob') 
insert into #Cast values (1, 2, 'tom') 
insert into #Cast values (2, 3, 'sam') 
insert into #Cast values (2, 4, 'ray') 

insert into #Films values (1, 'Flowers for Charlie') 
insert into #Films values (2, 'Batman') 

SELECT #Films.*, 
    SUBSTRING(
     (SELECT (',' + convert(varchar(10),Person_ID) + ',' + PersonName) 
     FROM #Cast 
     WHERE #Films.FilmID = #Cast.FilmID 
     ORDER BY #Films.FilmID, #Cast.FilmID 
     FOR XML PATH('') 
     ), 2, 8000) CastList 
FROM #Films 
+0

這個想法幫助我得到了一個可行的解決方案,謝謝! –