Combiner plusieurs lignes dans une chaîne séparée par des espaces
J'ai donc 5 lignes comme ceci
userid, col
--------------
1, a
1, b
2, c
2, d
3, e
Comment pourrais-je faire une requête de sorte qu'il ressemble à ceci
userid, combined
1, a b
2, c d
3, e
Presque la copie exacte de: stackoverflow.com/questions/2885709/sql-concatenate-rows-query
OriginalL'auteur haoxu | 2010-09-13
Vous devez vous connecter pour publier un commentaire.
Utiliser le GROUP_CONCAT fonction d'agrégation:
Le séparateur par défaut est la virgule (","), de sorte que vous devez spécifier le SÉPARATEUR d'un espace unique à obtenir le résultat que vous désirez.
Si vous voulez vous assurer que l'ordre des valeurs dans le GROUP_CONCAT, utilisation:
Option suivante (à partir de SQL prespective) serait un curseur et de concaténation de chaînes, mais il faudrait une fonction MySQL. Je ne suis pas familier avec la Ruche - il n'y a pas moyen d'utiliser une requête native?
Déposé une JIRA demande de GROUP_CONCAT dans HiveQL: issues.apache.org/jira/browse/HIVE-1689
GROUP_CONCAT n'existe pas réellement dans la Ruche encore... Cette solution n'est applicable qu'à MySQL.
Salut, je suis en train de tester la même chose sur sql lite sqliteonline.com GROUP_CONCAT ne fonctionne pas
OriginalL'auteur OMG Ponies
Dans la ruche, vous pouvez utiliser
collect_set supprime les doublons. Si vous avez besoin de les conserver, vous pouvez consulter ce post:
COLLECT_SET() dans la Ruche, garder les doublons?
OriginalL'auteur PanchaGil
OriginalL'auteur formath
Je suis sûr que vous ne pouvez pas faire cela à l'aide de la Ruche QL. Cependant, il devrait être possible de le faire si vous écrivez votre propre Map/reduce scripts - voir ce tutoriel pour commencer.
OriginalL'auteur Matthew Hegarty