我正在尝试将这样的数据格式化为我要编写的报告: (每列不同的行数) 每个城市,必须显示郊区列表,然后显示他们拥有的车辆列表,例如奥斯汀。
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
我从哪里开始?是答案吗?我甚至转动? 谢谢
答案 0 :(得分: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