Oracle: Comment faire une requête pivot?


Thomas Carlton

J'ai une table comme celle-ci:

Tableau 1: numéro d' identification , produit varchar2, argument varchar2, valeur AnyData

Quand il est rempli, cela ressemble à ceci:

entrez la description de l'image ici

Je souhaite créer une vue telle que le résultat est:

entrez la description de l'image ici

J'ai essayé la requête suivante:

select * from 
(select ARGUMENT, VALUE from Table)
pivot 
(first(VALUE) for ARGUMENT in ('Weight','Size','First Use'))

J'ai essayé avec les deux fonctions d'agrégation: First et Max.

Pour les deux, j'obtiens les erreurs suivantes:

  • ORA-56902: attendez-vous à une fonction d'agrégat dans le fonctionnement du pivot.
  • ORA-22950: impossible de commander des objets sans la méthode MAP ou ORDER.

Je comprends ces deux erreurs. La requête pivot peut fonctionner comme ceci.

Mais est-ce que quelqu'un connaît une autre façon d'obtenir le résultat souhaité s'il vous plaît?

Merci. À votre santé,

D-Shih

J'utiliserais une fonction aggravée pour faire pivoter.

select Product,
       MAX(CASE WHEN ARGUMENT = 'Weight' THEN "VALUE" END) Weight,
       MAX(CASE WHEN ARGUMENT = 'Size' THEN "VALUE" END) Size,
       MAX(CASE WHEN ARGUMENT = 'First Use' THEN "VALUE" END) FirstUse
from 
(
    select 
        Product,
        ARGUMENT, 
        "VALUE"
    from Table
) t1
GROUP BY Product

Si vous utilisez la même table, vous pouvez essayer de sélectionner directement une table au lieu d'une sous-requête.

select Product,
       MAX(CASE WHEN ARGUMENT = 'Weight' THEN "VALUE" END) Weight,
       MAX(CASE WHEN ARGUMENT = 'Size' THEN "VALUE" END) Size,
       MAX(CASE WHEN ARGUMENT = 'First Use' THEN "VALUE" END) FirstUse
from Table 
GROUP BY Product

Articles connexes


comment faire une requête pivot dans mysql?

user5332276 J'ai une table criteriadont la structure est comme ceci: +----------+------+-------+ | criteria | user | total | +----------+------+-------+ | xxxxxxxx | xx | xxx | +----------+------+-------+ J'ai un problème pour créer une requête. Je veux f

Comment faire une opération de somme dans une requête pivot SQl

utilisateur6347596 Ici, j'ai une simple table Name Cust With CustName, PurshaseItem, Price.J'ai écrit une requête PIVOT simple, son pivotement des données, mais je veux afficher la somme de l'amot Ici, j'ai besoin du grand total Requête pivot [![select custNam

Comment faire une requête https?

Samir Shahmuradli: Je devrais faire une demande à l'adresse et envoyer json, json que j'ai sous la forme d'un modèle public class RequestToPlanfix { private String cmd; private String providerId; private String channel; private String chatId;

Comment faire une requête https conditionnelle?

Arpan Kc C'est essentiellement ce que j'essaye de faire: var sendRequest= false; //may be true https.request(request_params, function(response){ //only sends a request if sendRequest == true //do something with response if request has been sent

Comment faire une requête Sequelize $ between ?

Enregistrer J'utilise node.js et Sequelize ORM pour mon projet. J'essaie d'obtenir toutes les lignes où l'étape est "en attente" ET la date entre 2 et 10 (fausses dates). Voici ma requête : const stain = await Gyn.findAll({ where: { stage:

Comment faire une requête HTTP à bitstamp?

Trrrrrrrrrr J'essaie d'utiliser une API de bitstamp pour récupérer un cours de change sur ma page Web. J'ai étudié ce problème, mais je n'arrive toujours pas à le faire fonctionner car il revient toujours ERROR Le lien utilisé est https://www.bitstamp.net/api/

comment faire une requête compliquée

Cool Dev J'ai une table de magasin, une table de produits et une table de produits de magasin montrant leur relation. *store table* store_id name ... 1 store1 2 store2 3 store3 *product table* product_id name ... 1 product1 2