我想在两张桌子上做一个数据透视表。
表1
PersonToPhone
PersonID int not null
phoneID int not null
表2
电话
phoneID int not null
PhoneNumber nvarchar(10)
PhoneType int
我希望结果是
---------|-------------|-------------|-------------|
personID | phoneNumber | phoneNumber | phoneNumber |........ n times
有没有办法使用数据透视表或一些很酷的sql来列出一行人员ID和他们所有的电话号码?
答案 0 :(得分:1)
select personID,[Foo],[Bar],[fooBar]
FROM (
SELECT pp.PersonID,phonetype,phoneNumber
FROM personToPhone AS PP
inner join phone as p on pp.phoneid = p.phoneid
where pp.personid = @PersonID) as tableToPivot
pivot (max(phoneNumber) for phoneType IN ([[Foo],[Bar],[fooBar])) as pivotTable
将大部分理论从这里拉下来 http://sqlwithmanoj.wordpress.com/2011/01/25/dynamic-pivot/