2015-03-31 87 views
0

我试图格式化这样的数据,用于我需要编写的报告: (每列的行数不同) 每个城市必须显示郊区列表,并且然后列出他们拥有的车辆列表奥斯汀。SQL - 数据透视表 - 每列中行数不均匀

City Suburbs Vehicles 
    1 Austin Bastrop Ford 
    2   Hutto  Mazda 
    3   Lakeway Mercedes 
    4   Luling 
    5   ShadyHollow 
    6   WellsBranch 
    7   BrushyCreek 
    8   Elgin 
    9   Jollyville 

    10 Dallas Belmont   BMW 
    11   Eastwood  Ford 
    12   GreenlandHills 
    13   LakeParkEstates 
    14   Lochwood  

这是源数据

declare @Test0 table(city nvarchar(10), [state] varchar(30)) 
    insert into @Test0 values ('Austin', 'Texas') 
    insert into @Test0 values ('Dallas', 'Texas') 

declare @Test1 table (city nvarchar(10), suburb nvarchar(30)) 
    insert into @Test1 values ('Austin', 'Bastrop') 
    insert into @Test1 values ('Austin', 'Hutto') 
    insert into @Test1 values ('Austin', 'Lakeway') 
    insert into @Test1 values ('Austin', 'Luling') 
    insert into @Test1 values ('Austin', 'ShadyHollow') 
    insert into @Test1 values ('Austin', 'WellsBranch') 
    insert into @Test1 values ('Austin', 'BrushyCreek') 
    insert into @Test1 values ('Austin', 'Elgin') 
    insert into @Test1 values ('Austin', 'Jollyville') 
    insert into @Test1 values ('Dallas', 'Belmont') 
    insert into @Test1 values ('Dallas', 'Eastwood') 
    insert into @Test1 values ('Dallas', 'GreenlandHills') 
    insert into @Test1 values ('Dallas', 'LakeParkEstates') 
    insert into @Test1 values ('Dallas', 'Lochwood') 

    declare @Test2 table(city nvarchar(10), vehicle nvarchar(30)) 
    insert into @Test2 values ('Austin', 'Ford') 
    insert into @Test2 values ('Austin', 'Mazda') 
    insert into @Test2 values ('Austin', 'Mercedes-Benz') 
    insert into @Test2 values ('Dallas', 'BMW') 
    insert into @Test2 values ('Dallas', 'Ford') 



select * from @Test0 t0 join @Test1 t1 on t0.city = t1.city 
join @Test2 t2 on t0.city = t2.city 

从哪里开始吗?枢轴的答案是什么?我甚至还在旋转? 谢谢

回答

2
select City, 
(
select suburb + ' ' from @test1 where city=a.city for xml path(''), 
type).value('.[1]', 'varchar(max)' 
), 
(
select vehicle+ ' ' from @test2 where city=a.city for xml path(''), 
type).value('.[1]', 'varchar(max)' 
) 
from @test0 a 
+0

你好,这几乎是工作的感谢,是有可能创造新的行,因为它目前造成2行:市\t(没有列名)\t(没有列名) 奥斯汀\t BastropHuttoLakewayLulingShadyHollowWellsBranchBrushyCreekElginJollyville \t福特马自达梅赛德斯 - 奔驰 Dallas \t BelmontEastwoodGreenlandHillsLakeParkEstatesLochwood \t宝马福特 – 2015-03-31 15:58:55

+0

不确定你的意思是通过创建新行,你能指定它吗? – 2015-03-31 16:56:09

+0

好吧,我已经将行号添加到原始问题了,谢谢 – 2015-03-31 18:28:09