Pivotement des lignes dans les colonnes de façon dynamique dans Oracle

J'ai de la suite Oracle 10g table appelée _kv:

select * from _kv

ID       K       V
----     -----   -----
  1      name    Bob
  1      age     30
  1      gender  male
  2      name    Susan
  2      status  married

J'aimerais changer mes clés dans les colonnes à l'aide de la plaine SQL (pas de PL/SQL), de sorte que le tableau devrait ressembler à quelque chose comme ceci:

ID       NAME    AGE    GENDER  STATUS
----     -----   -----  ------  --------
  1      Bob      30     male 
  2      Susan                   married
  • La requête doit avoir autant de colonnes que unique Ks existent dans la table (il n'y en a pas tant que ça)
  • Il n'y a aucun moyen de savoir ce que les colonnes peuvent exister avant l'exécution de la requête.
  • J'essaie d'éviter l'exécution d'une requête initiale pour en programmant construire la requête finale.
  • Les cellules vides peuvent être null ou une chaîne vide, n'a pas vraiment d'importance.
  • Je suis en utilisant Oracle 10g, mais un 11g solution serait aussi ok.

Il y a beaucoup d'exemples pour quand vous savez ce que pivoté colonnes peut être appelé, mais je ne peux pas trouver un générique de pivotement solution pour Oracle.

Merci!

  • Cher Dieu, est que d'un... la méta DB??
  • Vous devriez lire ceci: stackoverflow.com/questions/7340422/...
  • J'ai toujours trouvé de l'humour dans la lecture de ce sujet de la personne morale, la valeur de l'attribut " tables: asktom.oracle.com/pls/apex/...
  • Malheureusement, ce n'est pas ma conception (et la _kv tableau est un exemple)... j'ai besoin de générer des rapports en temps réel à partir de cette table, et toute tentative de filtre ou d'une ordonnance est juste me rend fou.
  • wow, si vous vouliez une valeur de clé de paire db, vous êtes trop cher énormément de l'utilisation d'Oracle. Regarder dans la base de données Berkeley (toujours gratuit, mais, ironiquement, contrôlée par Oracle ;). Mieux encore, la modification d'ventouse... à tout prix. bonne chance
  • Je pense que cette clause: "j'essaie d'éviter l'exécution d'une requête initiale pour en programmant construire la requête finale." va être la partie la plus difficile à surmonter. Je pense que @Dave est correct dans leur recommandation, mais vous peut être limitée à une 'me mes colonnes" interroger ensuite une dynamique de pivot construire au large de l') -->j'espère que quelqu'un prouve que j'ai tort - je ne vois pas comment vous serez en mesure d'éviter que les!

InformationsquelleAutor ojosilva | 2011-10-11