Maison >base de données >tutoriel mysql >Comment faire pivoter des données longues vers des données grand format dans SQLite à l'aide de CASE et GROUP BY ?

Comment faire pivoter des données longues vers des données grand format dans SQLite à l'aide de CASE et GROUP BY ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-10 13:01:46809parcourir

How to Pivot Long to Wide Format Data in SQLite Using CASE and GROUP BY?

Convertir les données tabulaires du format long au format large à l'aide de SQLite

Dans l'analyse des données, il est souvent nécessaire de convertir les données du format long (chaque ligne représente un enregistrement et plusieurs colonnes représentent différentes valeurs) au format large (chaque enregistrement occupe plusieurs colonnes). Cette opération est appelée pivotement.

Nous avons une table appelée markdetails avec la structure suivante :

  • studid subjectid marks

    A1 3 50
    A1 4 60
    A1 5 70
    B1 3 60
    B1 4 80
    C1595

Il existe également une table nommée student_info avec la structure suivante :

  • studid name

    <code>  A1          Raam
      B1          Vivek
      c1          Alex</code>

Nous souhaitons faire pivoter ces données dans le format large suivant :

  • studid name subjectid_3 subjectid_4 subjectid_5

    <code>  A1        Raam        50                60                 70
      B1        Vivek       60                80                NULL
      c1        Alex       NULL              NULL                95</code>

Une façon de procéder est d'utiliser l'instruction CASE avec GROUP BY. La requête suivante renverra le format large requis :

<code class="language-sql">SELECT
    si.studid,
    si.name,
    SUM(CASE WHEN md.subjectid = 3 THEN md.marks END) AS subjectid_3,
    SUM(CASE WHEN md.subjectid = 4 THEN md.marks END) AS subjectid_4,
    SUM(CASE WHEN md.subjectid = 5 THEN md.marks END) AS subjectid_5
FROM student_info si
JOIN markdetails md ON
    md.studid = si.studid
GROUP BY si.studid, si.name;</code>

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