Maison >base de données >tutoriel mysql >Comment puis-je transposer des tableaux (colonnes en lignes) dans PostgreSQL à l'aide de « unnest() » ?

Comment puis-je transposer des tableaux (colonnes en lignes) dans PostgreSQL à l'aide de « unnest() » ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-04 08:34:45163parcourir

How Can I Transpose Tables (Columns to Rows) in PostgreSQL Using `unnest()`?

Transposition de tableaux : conversion de colonnes en lignes dans PostgreSQL

La transformation de données tabulaires en faisant pivoter les colonnes en lignes peut être une opération précieuse dans la manipulation de données. Dans PostgreSQL, il existe des méthodes pour réaliser efficacement cette transposition. L'une de ces méthodes consiste à exploiter la fonction unnest().

Solution utilisant unnest()

Pour transposer une table, nous pouvons utiliser une combinaison d'agrégation unnest() et ARRAY. La requête suivante illustre la technique :

SELECT
   unnest(array['Sl.no', 'username', 'Designation','salary']) AS "Columns",
   unnest(array[Sl.no, username, value3Count,salary]) AS "Values"
FROM view_name
ORDER BY "Columns"

Explication

  • La fonction unnest() décompresse les tableaux en éléments individuels. Dans ce cas, il extrait les noms de colonnes et les valeurs correspondantes de la table d'origine.
  • L'agrégation ARRAY crée des tableaux pour contenir les noms de colonnes et les valeurs de chaque ligne.
  • La clause ORDER BY trie les résultats par noms de colonnes pour garantir que le tableau transposé a le résultat souhaité structure.

Sortie :

La requête renvoie un tableau transposé au format suivant :

Columns Values
Sl.no 1
username A
Designation XYZ
salary 10000
Sl.no 2
username B
Designation RTS
salary 50000
Sl.no 3
username C
Designation QWE
salary 20000
Sl.no 4
username D
Designation HGD
salary 34343

Remarque : Le tableau d'origine le nom dans la requête peut varier en fonction du nom réel de votre table.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn