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
Libérer: 2025-01-10 13:01:46
original
848 Les gens l'ont consulté

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>
    Copier après la connexion

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>
    Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal