【问题标题】:How to split SQL table into multiple columns如何将 SQL 表拆分为多列
【发布时间】:2014-05-02 21:18:14
【问题描述】:

我有一张这样的桌子

==========================
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
===============================

所以我想查看每个人的编号列表

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

【问题讨论】:

  • 你用的是什么关系型数据库?
  • 有人告诉我代码应该适用于 MySQL 和 Microsoft SQL Server
  • 如果你在 SQL Server 上工作,你可以使用 Pivot

标签: sql


【解决方案1】:

试试下面的查询。由于您不知道人数,因此将它们全部放入两个变量中,一个用于包含别名的 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;

【讨论】:

  • 做不到,有没有没有pivot的解决方案?
  • 对不起,我只知道这种方式,希望其他人可以通过其他方式帮助您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 1970-01-01
  • 2022-12-05
相关资源
最近更新 更多