Précédent   Forum du club des développeurs et IT Pro > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/12/2012, 17h55   #1
BaldeckJ
Candidat au titre de Membre du Club
 
Inscription : 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)
BaldeckJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 18h06   #2
jkofr
Membre éprouvé
 
Avatar de jkofr
 
Homme Jacques Kostic
Senior Consultant DBA (Trivadis SA)
Inscription : octobre 2006
Messages : 369
Détails du profil
Informations personnelles :
Nom : Homme Jacques Kostic
Âge : 44
Localisation : Suisse

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

Informations forums :
Inscription : octobre 2006
Messages : 369
Points : 482
Points : 482
Envoyer un message via MSN à jkofr
Hello,

Tu peux utiliser la fonction lag.

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

Jko
__________________
OCP 11g, RAC and Performance & Tuning Expert 11g
RMAN Backup & Recovery, Data Guard and Grid Control
jkofr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 18h30   #3
BaldeckJ
Candidat au titre de Membre du Club
 
Inscription : décembre 2002
Messages : 68
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 68
Points : 13
Points : 13
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" ?
BaldeckJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 20h05   #4
skuatamad
Expert Confirmé
 
Inscription : août 2008
Messages : 1 690
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 690
Points : 2 812
Points : 2 812
Citation:
Envoyé par BaldeckJ Voir le message
Existe t-il une manière de transformer ce texte en "nombre" ?
Produit cumulative en sql
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 20h27   #5
jkofr
Membre éprouvé
 
Avatar de jkofr
 
Homme Jacques Kostic
Senior Consultant DBA (Trivadis SA)
Inscription : octobre 2006
Messages : 369
Détails du profil
Informations personnelles :
Nom : Homme Jacques Kostic
Âge : 44
Localisation : Suisse

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

Informations forums :
Inscription : octobre 2006
Messages : 369
Points : 482
Points : 482
Envoyer un message via MSN à jkofr
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
__________________
OCP 11g, RAC and Performance & Tuning Expert 11g
RMAN Backup & Recovery, Data Guard and Grid Control
jkofr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 20h59   #6
jkofr
Membre éprouvé
 
Avatar de jkofr
 
Homme Jacques Kostic
Senior Consultant DBA (Trivadis SA)
Inscription : octobre 2006
Messages : 369
Détails du profil
Informations personnelles :
Nom : Homme Jacques Kostic
Âge : 44
Localisation : Suisse

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

Informations forums :
Inscription : octobre 2006
Messages : 369
Points : 482
Points : 482
Envoyer un message via MSN à jkofr
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
__________________
OCP 11g, RAC and Performance & Tuning Expert 11g
RMAN Backup & Recovery, Data Guard and Grid Control
jkofr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h33.


 
 
 
 
Partenaires

Hébergement Web