Oracle SQL select à partir de deux colonnes et de les combiner en un seul
J'ai cette table:
Vals
Val1 Val2 Score
A B 1
C 2
D 3
Je voudrais la sortie à une seule colonne, c'est le "sur-ensemble" de la Vals1 et Val2 variable. Elle conserve également le "score" de la variable associée à cette valeur.
La sortie doit être:
Val Score
A 1
B 1
C 2
D 3
La sélection de cette table deux fois et puis fusion est absolument pas une possibilité parce que la production, il est très coûteux. En plus je ne peut pas utiliser une clause parce que cette requête utilise une sous-requête et pour quelque raison que Oracle ne prend pas en charge les deux clauses.
Je n'ai pas vraiment soin sur la façon de répéter les valeurs sont traitées, ce qui est plus facile et plus rapide.
Comment puis-je générer mon de sortie approprié?
UNPIVOT
opérateur?"et pour quelque raison que Oracle ne prend pas en charge les deux avec des clauses de" il ne, juste de les définir avec des virgules et sans
WITH
mot-cléle précédent avec la clause est dans une sous-requête
déplacer vers le haut niveau. Je ne suis même pas sûr de la façon imbriquée
WITH
est possiblecela a fonctionné pour moi sur 11.2
WITH w AS(...) SELECT * FROM w, ( with...
OriginalL'auteur Jeremy | 2012-06-25
Vous devez vous connecter pour publier un commentaire.
Ici est la solution sans l'aide de unpivot.
Ici est essentiellement la même requête sans la clause:
Ou un peu plus, de façon concise,
Oracle a pris en charge depuis Oracle 9i release 2
+1, bien fait!
vous pouvez réécrire
where
en 2èmeselect
comme ceci:(Val1 IS NOT NULL) OR (Val2 IS NOT NULL)
, ou encore plus court:Coalesce(Val1, Val2) IS NOT NULL
😉Que ne lui donnera pas le résultat correct. Par exemple, il ne sera pas éliminer un Val1 valeur null si Val2 arrive à ne pas être null.
OriginalL'auteur dbenham
essayer ça, on dirait que vous voulez à convertir les valeurs des colonnes en lignes
de l'OP:
Selecting from this table twice and then unioning is absolutely not a possibility
OriginalL'auteur Ramesh Manni
Si vous êtes sur Oracle 11, unPivot aidera:
vous pouvez choisir l'un des noms au lieu de " val " et "origine".
Voir Oracle article sur pivot /unPivot.
OriginalL'auteur Alexander Malakhov