Joindre les deux requêtes select à partir de la même table
La table contient une colonne ID, valueHeading colonne et une colonne valeur. Je veux séparer la valeur de la colonne en deux nouvelles colonnes appelé valueHeading1 et valueHeading2 en fonction du type de valueHeading de la valeur.
Si je veux rejoindre cette sélection:
Edit: Full join
SELECT ID
,valueHeading
,value as 'valueHeading1'
FROM table1
WHERE valueHeading = 'valueHeading1'
Avec Cette sélection de:
SELECT ID
,value as 'valueHeading2'
FROM table1
WHERE valueHeading = 'valueHeading2'
sur leur ID. Comment puis-je faire cela?
Modifier pour illustrer ce que je veux faire:
Table d'origine:
ID valueHeading value
0 valueHeading1 a
0 valueHeading2 a
1 valueHeading1 ab
1 valueHeading2 NULL
2 valueHeading1 abcd
2 valueHeading2 abc
Nouvelle Table:
ID valueHeading1 valueHeading2
0 a a
1 ab NULL
2 abcd abc
- J'ai ajouté SQLServer balise, car il semble que c'est la DB que vous utilisez 🙂
- Oui désolé je n'ai pas le rendre clair.
Vous devez vous connecter pour publier un commentaire.
Dans SQLServer2005+ utilisation possible de PIVOT
Démo sur SQLFiddle
Essayez quelque chose comme :
Si vous souhaitez regrouper toutes les valeurs sur une ligne pour chaque ID, vous pouvez essayer :
Voir SQLFiddle. J'ai aussi essayé sur Oracle 11g et MSSQL 2012, et cela fonctionne à chaque fois.
value
pasvalueHeading
. ie;CASE WHEN valueHeading = 'valueHeading1' THEN value ELSE NULL END AS valueHeading1
value
changer et voir si vous obtenez les résultats? Je ne suis pas clair ce que vous avez exactement besoin pour l'instant ou vous êtes à la recherche d'unUNION
?Si vous avez besoin seulement de rejoindre l'utilisation de ce. À l'aide de cas quand est à la fois élégante façon, si vous n'avez pas besoin de jointure.
soi joindre pourrait être une solution simple