PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Transposition SQL des lignes en colonnes

Utiliser :

  SELECT r.user_id,
         MAX(CASE WHEN r.question_id = 1 THEN r.body ELSE NULL END) AS "Do you like apples?",
         MAX(CASE WHEN r.question_id = 2 THEN r.body ELSE NULL END) AS "Do you like oranges?",
         MAX(CASE WHEN r.question_id = 3 THEN r.body ELSE NULL END) AS "Do you like carrots?"
    FROM RESPONSES r
    JOIN QUESTIONS q ON q.id = r.question_id
GROUP BY r.user_id

Il s'agit d'une requête pivot standard, car vous « faites pivoter » les données des lignes vers les données en colonnes.