2014-04-03 63 views
0

我有以下數據,我只想顯示3行(表1中每個Table1Id有一行),但是某些ID在表2中有多個條目,這會創建一個新的顯示行時的數據,但我想表2秒,從數據表合併成單行1.將多行與外連接組合成一行sql

Table 1          Table 2 
Table1Id  Name  State     table2Id Table1Id City 
    1   Bart  Idaho      1   1  Boise 
    2   Jenny Utah      2   2  Salt Lake 
    3   Jill  Arizona     3   3  Phoenix 
               4   3  Yuma 

Select * From Table1 FULL OUTER JOIN Table2 ON Table1.TableId = Table2.Table1Id 

So far, it displays 4 rows like this: 
Name  State  City 
1.Bart Idaho  Boise 
2. Jenny Utah  Salt Lake 
3. Jill Arizona Phoenix 
4. Jill Arixona Yuma 

I want it to display 3 rows like this (with my gridview of course) 
Name  State  City 
1.Bart Idaho  Boise 
2. Jenny Utah  Salt Lake 
3. Jill Arizona Phoenix Yuma 

回答

0

這個question類似,您可以使用STUFFXML PATHGROUP BY ...

SELECT 
    [ID], 
    [NAME], 
    [STATE], 
    STUFF((
    SELECT ', ' + [City] + ':' + CAST([Value] AS VARCHAR(MAX)) 
    FROM #YourTable 
    WHERE (ID = Results.ID) 
    FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)') 
    ,1,2,'') AS NameValues 
FROM #YourTable Results 
GROUP BY ID 

由於這是更多的顯示問題,通常在前端而不是後端執行它更好。

+0

所以沒有辦法做到這一點與我如何擁有它類似?原因是我的選擇方式更加複雜,有多個連接和一個數據透視表,但試圖使這個假設查詢適合我加入該表的方式。 – mlg74

+0

如果你想基本上在該列表上使用字符串連接的「GROUP BY」做一個列,這是我見過的最簡單的方法。 –

+0

我會接受你的答案,因爲它確實回答了問題,並會在這裏提出一個更復雜的問題https://stackoverflow.com/questions/22844744/combine-multiple-rows-of-joined-table-into-1-row – mlg74