Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
Mysql 如何将表行值设置为列_Mysql_Sql_Database - Fatal编程技术网

Mysql 如何将表行值设置为列

Mysql 如何将表行值设置为列,mysql,sql,database,Mysql,Sql,Database,我想根据Mysql表中的行值生成列名 Id Value Type 1 ABC Bank Bank 1 User Name 1 123 ID 1 user@email.com Email 1 Banking Reference 我想上面是显示如下,你能帮我写这个查询。提前谢谢 Id Bank Name I

我想根据Mysql表中的行值生成列名

Id  Value               Type
1   ABC Bank        Bank
1   User                 Name
1   123               ID
1   user@email.com       Email
1   Banking             Reference
我想上面是显示如下,你能帮我写这个查询。提前谢谢

Id      Bank     Name         ID           Email        Reference
1     ABC Bank   User        123    User@email.com   Banking

您可以使用条件聚合:

select id,
       max(case when type = 'Bank' then value end) as bank,
       max(case when type = 'Name' then value end) as name,
       max(case when type = 'Id' then value end) as otherId,
       max(case when type = 'Email' then value end) as email,
       max(case when type = 'reference' then value end) as reference
from t
group by id;

我们可以通过PIVOT概念实现动态使用,但无论[Type]字段数据是否应该是实际字段名,都应该是不同的

CREATE TABLE PivotTable (Id INT,Value VARCHAR(100),[Type] VARCHAR(100))

INSERT INTO PivotTable VALUES 
 (1,'ABC Bank','Bank')      
,(1,'User','Name')          
,(1,'123','IDs')                
,(1,'user@email.com','Email')
,(1,'Banking','Reference')

SELECT * FROM PivotTable

DECLARE @Columns NVARCHAR(MAX),
        @SQL NVARCHAR(MAX)

SET @Columns = STUFF((SELECT  DISTINCT ','+[Type] FROM PivotTable FOR XML PATH('')),1,1,'')

SET @SQL = 'SELECT Id,'+@Columns+' FROM 
            (
            SELECT Id,
                   Value,
                   [Type]

            FROM PivotTable
            ) P
            PIVOT
            (
            MAX(Value) FOR [Type] IN ('+@Columns+')
            )pvt'

            EXEC (@SQL)

您应该研究在mysql中创建数据透视。以下是指向示例pivot的链接:。是每个id的变量值数量,是否不知道可以有多少个变量以及它们的顺序如何?值的数量可能会有所不同。它可以是5到10之间的任何值