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 17/10/2011, 18h09   #1
Invité régulier
 
Homme
Consultant en Business Intelligence
Inscription : septembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : septembre 2011
Messages : 6
Points : 5
Points : 5
Par défaut Gestion date de début/date de fin

Bonjour à tous,

Dans le cadre d'un projet décisionnel je dois dans un premier temps effectuer une requête sur les données suivantes:
NOM PRENOM NIR DATE_DEBUT DATE_FIN
A AA 1234567 01/03/2000
A AA 12345678 01/02/2000
A AA 123456789 01/01/2000
B ZZ 123456 01/02/2000
B ZZ 123456 01/01/2000

Je souhaite effectuer une requête sql permettant de comparer les lignes et de récupérer pour chaque ligne uniquement la première date dans le cas où les autres informations ne changent pas.
Pourriez-vous m'aider à construire cette requête svp?

Deuxième question
Toujours dans le cadre du traitement des mêmes informations, je souhaite mettre en place un traitement sql permettant à chaque nouvel enregistrement de renseigner automatiquement la date de fin de la ligne précédente en mettant (DATE_DEBUT - 1j).
Pourriez-vous m'aider à élaborer cette requête également svp?

ZM
zaimielm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 21h01   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Les fonctions analytiques
Citation:
Je souhaite effectuer une requête sql permettant de comparer les lignes et de récupérer pour chaque ligne uniquement la première date dans le cas où les autres informations ne changent pas.
Code :
1
2
3
4
5
SELECT nom, prenom, nir, date_debut
  FROM (SELECT nom, prenom, nir, date_debut,
               row_number() over (partition BY nom, prenom, nir ORDER BY date_debut) AS rn
          FROM latable)
 WHERE rn = 1
Peut être utiliser dense_rank à la place de row_number si besoin.
Citation:
Toujours dans le cadre du traitement des mêmes informations, je souhaite mettre en place un traitement sql permettant à chaque nouvel enregistrement de renseigner automatiquement la date de fin de la ligne précédente en mettant (DATE_DEBUT - 1j).
Code :
1
2
3
SELECT nom, prenom, nir, date_debut
       lead(date_debut) over (partition BY nom, prenom, nir ORDER BY date_debut) -1 AS date_fin
  FROM latable
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/10/2011, 11h53   #3
Invité régulier
 
Homme
Consultant en Business Intelligence
Inscription : septembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : septembre 2011
Messages : 6
Points : 5
Points : 5
Bonjour skuatamad,

Je vous remercie pour votre réponse. En effet, les deux requêtes fonctionnent parfaitement

Salutations,
ZM
zaimielm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 12h03   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Je n'ai rien contre les fonctions analytiques - bien au contraire - mais dans la première requête ça ne me paraît pas nécessaire :
Code :
1
2
3
  SELECT nom, prenom, nir, min(date_debut) AS date_debut
    FROM latable
GROUP BY nom, prenom, nir;
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/10/2011, 12h05   #5
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Effectivement
skuatamad 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 05h15.


 
 
 
 
Partenaires

Hébergement Web