Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : décembre 2002
    Messages : 68
    Points : 13
    Points
    13

    Par défaut Quantité totale nomenclature

    Dans le select de recherche nomenclature multi niveaux, comment multiplier les quantités des différents niveaux ?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT 
    rownum,
    level,
    t1.ComposantParent,
    t1.ComposantEnfant,
    t1.Quantite,
    ???
    FROM TableNomenclature t1
    start WITH t1.ComposantParent = 'RefProduit'
    connect BY prior t1.ComposantEnfant = t1.ComposantParent
    Ex :
    Parent Enfant __ Quantite __ ??? _____ Commentaire
    C1___C2__________10____10______(10 => 10 C2)
    C2___C3__________2_____20______(10*2 => 20 C3)
    C3___C4__________5_____100_____(10*2*5 => 100 C4)

  2. #2
    Membre chevronné Avatar de jkofr
    Homme Profil pro Jacques Kostic
    Senior Consultant DBA (Trivadis SA)
    Inscrit en
    octobre 2006
    Messages
    484
    Détails du profil
    Informations personnelles :
    Nom : Homme Jacques Kostic
    Âge : 45
    Localisation : Suisse

    Informations professionnelles :
    Activité : Senior Consultant DBA (Trivadis SA)
    Secteur : Conseil

    Informations forums :
    Inscription : octobre 2006
    Messages : 484
    Points : 638
    Points
    638

    Par défaut

    Hello,

    Tu peux utiliser la fonction lag.

    Regarde ici: http://lalystar.developpez.com/fonctionsAnalytiques/

    Jko
    OCM 11g, RAC and Performance & Tuning Expert 11g
    RMAN Backup & Recovery, Data Guard and Grid Control

  3. #3
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : décembre 2002
    Messages : 68
    Points : 13
    Points
    13

    Par défaut

    J'ai trouvé cette fonction

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT 
    rownum,
    level,
    t1.ComposantParent,
    t1.ComposantEnfant,
    t1.Quantite,
    '1' || SYS_CONNECT_BY_PATH(t1.quantite, '*') AS TotalQte
    FROM TableNomenclature t1
    start WITH t1.ComposantParent = 'RefProduit'
    connect BY prior t1.ComposantEnfant = t1.ComposantParent
    qui donne le résultat suivant sous forme de texte :
    TotalQte
    1*10
    1*10*2
    1*10*2*5

    Existe t-il une manière de transformer ce texte en "nombre" ?

  4. #4
    Expert Confirmé
    Inscrit en
    août 2008
    Messages
    2 145
    Détails du profil
    Informations forums :
    Inscription : août 2008
    Messages : 2 145
    Points : 3 744
    Points
    3 744

    Par défaut

    Citation Envoyé par BaldeckJ Voir le message
    Existe t-il une manière de transformer ce texte en "nombre" ?
    Produit cumulative en sql

  5. #5
    Membre chevronné Avatar de jkofr
    Homme Profil pro Jacques Kostic
    Senior Consultant DBA (Trivadis SA)
    Inscrit en
    octobre 2006
    Messages
    484
    Détails du profil
    Informations personnelles :
    Nom : Homme Jacques Kostic
    Âge : 45
    Localisation : Suisse

    Informations professionnelles :
    Activité : Senior Consultant DBA (Trivadis SA)
    Secteur : Conseil

    Informations forums :
    Inscription : octobre 2006
    Messages : 484
    Points : 638
    Points
    638

    Par défaut

    Citation Envoyé par skuatamad Voir le message
    Alors dans ce cas, dans l'exemple ci-dessus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
    CREATE OR REPLACE FUNCTION CalcProduit (pVal Varchar2) RETURN NUMBER AS
    lNum  Number;
    Begin
     
     execute immediate ('select '||pVal||' from dual') INTO lNum;
     RETURN lNum;
     
    End;
    /
     
     
    SELECT 
    rownum,
    level,
    t1.ComposantParent,
    t1.ComposantEnfant,
    t1.Quantite,
    CalcProduit ('1' || SYS_CONNECT_BY_PATH(t1.quantite, '*')) AS TotalQte
    FROM TableNomenclature t1
    start WITH t1.ComposantParent = 'RefProduit'
    connect BY prior t1.ComposantEnfant = t1.ComposantParent
    Non?

    jko
    OCM 11g, RAC and Performance & Tuning Expert 11g
    RMAN Backup & Recovery, Data Guard and Grid Control

  6. #6
    Membre chevronné Avatar de jkofr
    Homme Profil pro Jacques Kostic
    Senior Consultant DBA (Trivadis SA)
    Inscrit en
    octobre 2006
    Messages
    484
    Détails du profil
    Informations personnelles :
    Nom : Homme Jacques Kostic
    Âge : 45
    Localisation : Suisse

    Informations professionnelles :
    Activité : Senior Consultant DBA (Trivadis SA)
    Secteur : Conseil

    Informations forums :
    Inscription : octobre 2006
    Messages : 484
    Points : 638
    Points
    638

    Par défaut

    J'avais pas vu la fonction du même type dans ton post skuatamad.

    Je préfère ta version avec le bloc PL car pas d'appel à DUAL...

    jko
    OCM 11g, RAC and Performance & Tuning Expert 11g
    RMAN Backup & Recovery, Data Guard and Grid Control

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •