Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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 - Fatal编程技术网

如何将SQL表拆分为多列

如何将SQL表拆分为多列,sql,Sql,我有一张这样的桌子 ========================== ID | num | person | name -------------------------- 1 | int | int | varchar 2 | int | int | varchar ========================== 其中id-int,主键 num-int,外键。只是一个数字 person-int,外键。个人的Int名称 姓名-varchar(30)

我有一张这样的桌子

==========================
ID | num   | person | name    
--------------------------
 1 | int   | int    | varchar
 2 | int   | int    | varchar
==========================
其中id-int,主键

num-int,外键。只是一个数字

person-int,外键。个人的Int名称

姓名-varchar(30)

我必须像这样为每个人获取一个id列表(id不是旧id,我必须创建新的号码,并为每个人创建一个“num”列表)

===============================
ID | person1 | person2 | person3    
-------------------------------
 1 | num     | num     | num
 2 | num     | num     | num
===============================
所以我想看到每个人的num编号列表


我不知道有多少不同的人。。。请帮助。

尝试下面的查询。由于您不知道人数,请将所有人放在两个变量中,一个用于包含alias的select语句,另一个用于仅包含人员的pivot

select @persons = @persons + '[' + A.name + '],'
from table1

select @personsalias = @persons + '[' + A.name + '] as [' + A.name + '],'
from table1

SELECT Id, 
@personsalias
FROM
(SELECT Id, num, name 
FROM table1) AS SourceTable
PIVOT
(
MAX(num)
FOR name IN (@persons)
) AS PivotTable;

您使用的是什么RDBMS?有人告诉我,代码应该与MySQL和Microsoft SQL Server配合使用。如果您正在使用SQL Server,您可以使用Pivot。没有Pivot,任何解决方案都无法做到这一点。对不起,我只知道这种方式,希望其他人能以任何其他方式帮助您