Как сделать таблицу Row Values ​​в виде столбца - PullRequest
1 голос
/ 04 июля 2019

Я хочу сделать имя столбца из значений строк в Mysql Table

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

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Вы можете использовать условное агрегирование:

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;
0 голосов
/ 04 июля 2019

Мы можем добиться использования динамически с концепцией 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...