2014-04-03 45 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