Вот моя таблица ввода:

ID    Position  Email  
1     1         email1  
1     2         email2  
1     3         email3  
2     1         emaila  
3     1         emailz  
3     2         emaily  

Это таблица вывода, которую я хотел бы заполнить:

ID  primary_email Secondary_email    
1   email1        email2  
2   emaila  
3   emailz        emaily  
0
reid55 13 Авг 2014 в 10:22
1
Просили уже миллионы раз ... попробуйте поискать
 – 
Mitch Wheat
13 Авг 2014 в 10:24
Я потратил довольно много времени на поиски, но не нашел ничего похожего
 – 
reid55
13 Авг 2014 в 10:27
Вы пишете «входной файл», но упоминаете SQL. Это не имеет смысла, поскольку SQL работает с таблицами базы данных, а не с файлами. Вы имеете в виду, что то, что вы перечисляете, является таблицей базы данных?
 – 
sleske
13 Авг 2014 в 10:32
Откуда поступает ввод?
 – 
serakfalcon
13 Авг 2014 в 10:33
1
Да ... если вы используете «row» вместо «line» и «table» вместо «file», вы должны получить лучшие результаты поиска;) В любом случае, конкатенация немного зависит от используемой вами СУБД. У разных двигателей разные функции для этого. И вы не говорите нам, какую СУБД вы используете.
 – 
Frazz
13 Авг 2014 в 10:47

1 ответ

Лучший ответ

Может быть что-то вроде этого

SELECT ID,
       MAX(CASE WHEN Position = 1 THEN Email ELSE '' END) AS primary_email,
       MAX(CASE WHEN Position = 2 THEN Email ELSE '' END) AS Secondary_email
FROM YourTable
GROUP BY ID;
0
Vignesh Kumar A 13 Авг 2014 в 11:10