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 ?
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!