0

j'ai obtenu le tableau comme indiqué ci-dessous dans la base de données:Affichage valeur de la cellule comme nom de colonne en utilisant SQL

Name  Grade  Subject 

Ami   HD   Java 
Ami   D   C++ 
Bec   D   Java 
Bec   P   C++ 

Est-il possible d'afficher au format indiqué ci-dessous seulement en utilisant SQL:

Name  Java  C++ 

Ami  HD   D 
Bec  D   P 

I J'ai essayé dur, mais je n'ai pas trouvé de solution.

Merci.

+0

FYI: Ce dont vous avez besoin s'appelle un tableau croisé dynamique. –

+0

C'est ce qu'on appelle la recherche pivotante sur SO et vous trouvez beaucoup de réponses –

+0

http://stackoverflow.com/search?q=pivot+sql –

Répondre

2

Essayez ceci:

SELECT 
    Name, 
    MAX(CASE Subject WHEN 'C++' THEN Grade END) 'C++', 
    MAX(CASE Subject WHEN 'Java' THEN Grade END) 'Java' 
FROM @test 
GROUP BY Name; 

Le problème avec votre table est qu'il n'y a pas de valeur numérique, vous pouvez regrouper vos colonnes avec, de sorte que vous pouvez utiliser min ou max comme un agrégat. Vous pouvez voir la requête en action dans l'explorateur de données here

Questions connexes