Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 14/03/2011, 16h01   #1
Membre confirmé
 
Avatar de PAYASS59
 
Homme
Inscription : février 2005
Messages : 735
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2005
Messages : 735
Points : 291
Points : 291
Par défaut faire varier les variables

Hello,

Novice en pl/sql, j'aimerai des conseils sur les méthodes pour pouvoir réaliser ce genre de chose :

Je voudrais déclarer 2 variables :

date_deb ='01/01/2011'
date_fin ='31/03/2011'

Je voudrais que mon petit programme face modifier mes variable dans mon script pour exécuter 3 fois la requête et concaténer les résultat.

1- Ma requête s’exécute :

Code :
1
2
3
SELECT * FROM ma_table WHERE date BETWEEN '01/01/2011' AND '31/01/2011';
SELECT * FROM ma_table WHERE date BETWEEN '01/02/2011' AND '28/02/2011';
SELECT * FROM ma_table WHERE date BETWEEN '01/03/2011' AND '31/03/2011';
merci d'avance de votre aide.
__________________
Je préfère ma soif d'apprendre, à leurs certitudes de savoir....
PAYASS59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 16h16   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Citation:
Envoyé par PAYASS59 Voir le message
...Je voudrais que mon petit programme face modifier mes variable dans mon script pour executer 3 fois la requête et concaténer les résultat.

1- Ma requête s'execute :

select * from ma_table where date between '01/01/2011' and '31/01/2011';
select * from ma_table where date between '01/02/2011' and '28/02/2011';
select * from ma_table where date between '01/03/2011' and '31/03/2011';
...

Utilisez une seule requête.
Code :
1
2
 
SELECT * FROM ma_table WHERE date BETWEEN '01/01/2011' AND '31/03/2011';
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 16h30   #3
Membre confirmé
 
Avatar de PAYASS59
 
Homme
Inscription : février 2005
Messages : 735
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2005
Messages : 735
Points : 291
Points : 291
merci de la réponse mais je ne peux pas faire ça....
ma requête est bien plus complexe et si je veux des résultats cohérents, je dois le faire mois par mois
__________________
Je préfère ma soif d'apprendre, à leurs certitudes de savoir....
PAYASS59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 18h55   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808

Un exemple ?
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 08h38   #5
Membre confirmé
 
Avatar de PAYASS59
 
Homme
Inscription : février 2005
Messages : 735
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2005
Messages : 735
Points : 291
Points : 291
je calcul des ETP mensuels par le biais de sum....
SI je ne le fais pas par période mensuelle mes calculs ne sont plus bons.
C'est pour cela que je voudrai faire boucler ma requête
__________________
Je préfère ma soif d'apprendre, à leurs certitudes de savoir....
PAYASS59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 11h21   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Citation:
Envoyé par PAYASS59 Voir le message
je calcul des ETP mensuels par le biais de sum....
SI je ne le fais pas par période mensuelle mes calculs ne sont plus bons.
C'est pour cela que je voudrai faire boucler ma requête
Ajoutez un order by et gérez la "rupture" du mois.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/03/2011, 19h56   #7
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,
Une autre possibilité, le group by :
Code :
1
2
3
4
5
  SELECT SUM(toto), TRUNC(ma_date, 'MM')
    FROM ma_table
   WHERE ma_date BETWEEN TO_DATE('01/01/2011', 'DD/MM/YYYY')
                     AND TO_DATE('31/03/2011', 'DD/MM/YYYY')
GROUP BY TRUNC(ma_date, 'MM');
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h02.


 
 
 
 
Partenaires

Hébergement Web