J'ai la table suivante avec les détails de l'étudiant et GPA
|clg_id | sem1_sgpa | sem2_sgpa| --------------------------------- |o170431 | 9.6 | 9.8 | |o170440 | 9.2 | 8.6 | |o170450 | 8.2 | 9.1 | --------------------------------
3 Réponses :
Vous pouvez utiliser oui s'il y a SEM3, je veux une colonne supplémentaire em> p> forte>, il peut être réalisé en créant une requête dynamique à l'aide d'une déclaration préparée. P> SO TELIALEMENT, il fonctionnera pour case code> avec somme code> pour obtenir la sortie. case code> est de filtrer la valeur spécifique de la colonne SEM_TYPE code>. p> somme code> avec Groupe par code> est de résumer toutes les valeurs et de produire un résultat unique. P> xxx pré> N code> Numéro de SEM (S) au lieu de mettre à jour la requête manuellement. P> select
group_concat(concat("sum(case when sem_type = '",sem_type,"' then ",sgpa," end) as ",sem_type,"_sgpa"))
into @dynamiccol
from (select sem_type from student_details group by sem_type) t;
set @dynamicquery = concat("select clg_id, ",@dynamiccol," from student_details group by clg_id");
prepare stmt from @dynamicquery;
execute stmt;
deallocate prepare stmt;
Comment GROUP_CONCAT ET CASE fonctionne, pouvez-vous expliquer
La requête ci-dessus est-elle travaillant?
oui cette requête fonctionne parfaitement
Depuis que vous n'avez pas mentionné le type de données de colonne, j'ai ajouté group_concat code> ou somme code> fonctionne aussi bien.
Quelque chose comme ça devrait fonctionner: Demo Fiddle ici: https://www.db-fiddle.com/f/ohgnnz1w9n7tdrz5ak16ey/1 p> p>
SELECT p1.clg_id as cig_id ,p1.sgpa as sem1_gpa,p2.sgpa as sem2_gpa from (select sgpa,clg_id from student_details where sem_type='sem1') as p1 inner join (select sgpa,clg_id from student_details where sem_type='sem2') as p2 on p1.clg_id = p2.clg_id ;
Bien que ce code puisse répondre à la question, fournissant un contexte supplémentaire concernant la raison et / ou la manière dont ce code répond à la question améliore sa valeur à long terme. Pourquoi avez-vous appliqué ce code, où est l'accent, des résultats de cette requête? Je vous recommanderais de vérifier alors officiel Comment répondre à l'article ainsi que le compréhensive Blog POST de JON SKEET .
Basé sur quoi? Expliquez votre condition. Montrez ensuite ce que vous avez essayé, cela a déjà été discuté. Voir Comment demander et exemple de reproductible minimal . Vous devriez compléter la visite qui explique les bases pour l'utiliser.
Si vous avez un SEM3, vous attendriez-vous une colonne supplémentaire dans les résultats pour cela?
oui s'il y a SEM 3, je veux une colonne supplémentaire
Vous devriez rechercher un pivot MySQL et une agrégation conditionnelle MySQL.