2015-03-04 2 views
0

Comment convertir des colonnes d'une rangée en une rangée chacune?Comment convertir une seule ligne en une seule colonne?

données ayant dans le tableau ci-dessous:

+------+------+------+------+ 
| col1 | col2 | col3 | col4 | 
+------+------+------+------+ 
| a1 | a2 | a3 | a4 | 
+------+------+------+------+ 

sortie requise: toutes les valeurs de la ligne doivent aller dans une seule colonne comme ci-dessous.

+---------------+ 
| All_cols | 
+---------------+ 
| a1,a2,a3,a4 | 
+---------------+ 

Comme dans l'image: Ici mytable ont toujours un enregistrement, donc j'ai besoin de la sortie comme ci-dessous.

enter image description here

voulez éviter ci-dessous sql car elle nécessite plusieurs jointures:

select a1.name from accounts a1 where a1.id='658f3b73-8260-5a7a-ae7e-54c25deded36' 

union 

Select a2.name from accounts a1 
left join accounts a2 on a1.id=a2.parent_id where a1.id='658f3b73-8260-5a7a-ae7e-54c25deded36' 

union 

Select a3.name from accounts a1 
left join accounts a2 on a1.id=a2.parent_id 
left join accounts a3 on a2.id=a3.parent_id where a1.id='658f3b73-8260-5a7a-ae7e-54c25deded36' 

union 

Select a4.name from accounts a1 
left join accounts a2 on a1.id=a2.parent_id 
left join accounts a3 on a2.id=a3.parent_id 
left join accounts a4 on a3.id=a4.parent_id where a1.id='658f3b73-8260-5a7a-ae7e-54c25deded36' 

union 

Select a5.name from accounts a1 
left join accounts a2 on a1.id=a2.parent_id 
left join accounts a3 on a2.id=a3.parent_id 
left join accounts a4 on a3.id=a4.parent_id 
left join accounts a5 on a4.id=a5.parent_id where a1.id='658f3b73-8260-5a7a-ae7e-54c25deded36' 
+0

Cher, Il est en train de convertir des données de ligne en une seule colonne comme dans l'image, merci pour votre réponse. – Sam

+0

J'ai vu l'image maintenant –

+0

chère J'ai juste corrigé l'image car ma table a toujours un enregistrement. – Sam

Répondre

0

Vous pourriez faire un UNION sur quatre appels simples

SELECT col1 FROM mytable 
UNION 
SELECT col2 FROM mytable 
UNION 
SELECT col3 FROM mytable 
UNION 
SELECT col4 FROM mytable 

volonté sortie

enter image description here

Vous dites que

matable ont toujours un enregistrement.

Sachez que si vous avez plus d'un enregistrement, il est sage d'utiliser la même condition WHERE sur chaque relevé SELECT ci-dessus.

+0

cela fonctionne, est-il un moyen simple, parce que les valeurs ne viennent pas d'une table, il nécessite plusieurs jointures, en ajoutant mon SQL exact. – Sam