如何将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,任何解决方案都无法做到这一点。对不起,我只知道这种方式,希望其他人能以任何其他方式帮助您