Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2007, 13h23   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 76
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 76
Points : 10
Points : 10
Par défaut Problème avec une requete

Bonjour,

Je cherche à obtenir une requete me donnant les 8 premieres lignes de facturation pour un dossier

J'ai une table ou j'ai plusieurs enregistrement pour un dossier et je souhaite récupérer le tout sur une seule ligne

Je pensais utiliser une sélection sur ROWNUM, mais ca ne marche pas

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
SELECT a.*,b.*
FROM
 
(SELECT * FROM
(
SELECT coalesce(cd_forf,cd_bout,cd_abon,cd_soin) code,lig_libell,
lig_qte,lig_mt_pu,lig_mt_tot,rownum num,lig_date,cd_facid
FROM f_lig
 WHERE cd_facid=88222 
 AND lig_tp_lig IN ('S','B','F','O')
 ORDER BY lig_date DESC
 )
WHERE  num =1) A ,
 
 
(SELECT * FROM
(
SELECT coalesce(cd_forf,cd_bout,cd_abon,cd_soin) code,lig_libell,
lig_qte,lig_mt_pu,lig_mt_tot,rownum num,lig_date,cd_facid
FROM f_lig
 WHERE cd_facid=88222 
 AND lig_tp_lig IN ('S','B','F','O')
 ORDER BY lig_date DESC
 )
WHERE  num =2) B
Merci pour votre aide
ambre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 15h39   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
http://oracle.developpez.com/faq/?page=3-1#rownum
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 15h47   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 76
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 76
Points : 10
Points : 10
Sur ce lien je trouve un exemple sur les tris avnat sélection
Pour cà c'est ok

J'obtiens bien la 1ere ligne avec la 1ere requete, la 2 eme ligne avec la 2ème en les exécutant séparemment

Mais j'ai besoin d'obtenir les champs de la 1ere suivi des champs de la 2 eme
ambre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 15h50   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Code :
1
2
3
4
5
6
7
8
9
10
SELECT * FROM
(
SELECT coalesce(cd_forf,cd_bout,cd_abon,cd_soin) code,lig_libell,
lig_qte,lig_mt_pu,lig_mt_tot,rownum num,lig_date,cd_facid
FROM f_lig
 WHERE cd_facid=88222 
 AND lig_tp_lig IN ('S','B','F','O')
 ORDER BY lig_date DESC
 )
WHERE  num < 9
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 16h00   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 76
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 76
Points : 10
Points : 10
Excuse moi, comme je le précise dans mon premier message, je ne veux pas 8 lignes mais une seule ligne

Je souhaiterais

code1,libelle1,prix1,code2,libelle2,prix2,code3,libell3 .........
ambre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 16h20   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
De nombreux sujets ont déjà traité la question de mettre les lignes en colonnes... il me semble que c'est ROLLUP le mot magique pour s'en sortir... tu peux aussi utiliser LAG et LEAD
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 16h48   #7
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 76
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 76
Points : 10
Points : 10
Pour mon cas en utilisant LEAD je vais obtenir ce que je veux

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SELECT code code1,lig_libell lib1,
       LEAD(code,2) OVER (ORDER BY cd_facid) AS code2 ,LEAD(lig_libell,2) OVER (ORDER BY cd_facid) AS lib2,
	   LEAD(code,3) OVER (ORDER BY cd_facid) AS code3 ,LEAD(lig_libell,3) OVER (ORDER BY cd_facid) AS lib3
 
FROM  
(
SELECT coalesce(cd_forf,cd_bout,cd_abon,cd_soin) code,lig_libell,
lig_qte,lig_mt_pu,lig_mt_tot,rownum num,lig_date,cd_facid
FROM f_lig
 WHERE cd_facid=88222 
 AND lig_tp_lig IN ('S','B','F','O')
 ORDER BY lig_date DESC
 )
WHERE  num < 9

Merci beaucoup
ambre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h53.


 
 
 
 
Partenaires

Hébergement Web