Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql数据透视表或类似数据透视表的内容_Sql_Sql Server - Fatal编程技术网

sql数据透视表或类似数据透视表的内容

sql数据透视表或类似数据透视表的内容,sql,sql-server,Sql,Sql Server,我想在我的两张桌子上做一个透视表 表1 个人电话 PersonID int not null phoneID int not null 表2 电话 我希望结果是 ---------|-------------|-------------|-------------| personID | phoneNumber | phoneNumber | phoneNumber |........ n times 有没有一种方法可以使用pivot表或一些很酷的sql在一行中列出personID及其所

我想在我的两张桌子上做一个透视表

表1

个人电话

 PersonID int not null
 phoneID int not null
表2

电话

我希望结果是

---------|-------------|-------------|-------------|
personID | phoneNumber | phoneNumber | phoneNumber |........ n times
有没有一种方法可以使用pivot表或一些很酷的sql在一行中列出personID及其所有电话号码?

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
把大部分理论从这里扯了出去

把大部分理论从这里扯了出去

所有电话号码都是提前知道的。如果是这样的话,你可以使用关键字。从phoneid到personid的计数将是3。我说的是知道所有的电话号码。例如,您是否知道这10个人的全部30个电话号码,以便您可以将这些电话号码指定为输出列?是否所有电话号码都提前知道。如果是这样的话,你可以使用关键字。从phoneid到personid的计数将是3。我说的是知道所有的电话号码。例如,您是否知道10个人的全部30个电话号码,以便可以将电话号码指定为输出列?
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