sql >> Databáze >  >> RDS >> PostgreSQL

SQL Transponujte řádky jako sloupce

Použijte:

  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

Toto je standardní kontingenční dotaz, protože data „pivotujete“ z řádků do sloupcových dat.



  1. PostgreSQL:běžící počet řádků pro dotaz „po minutě“

  2. S DUPLIKÁTNÍM KLÍČEM + AUTOMATICKÝM PŘIDĚLENÍM problém mysql

  3. Alternativy MySQL Workbench - Správa konfigurace ClusterControl

  4. Příklady SIGN() v SQL Server