sql pivot表或类似于数据透视表的东西

时间:2011-05-16 13:48:07

标签: sql sql-server

我想在两张桌子上做一个数据透视表。

表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和他们所有的电话号码?

1 个答案:

答案 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/