Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/12/2007, 16h29   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 37
Points : 14
Points : 14
Par défaut pb SELECT CASE WHEN

Bonjour,
j'ai un pb avec une requête dans un script dont je dois saisir les paramètres:

-> mes tables:
customer(customer_id,name)
sales_order(order_id,customer_id,order_date)

A partir d'un script, je saisi les paramètres "nom client" au prompt ainsi qu'un interval de date pour lequel j'affiche les commandes (date min, date max)
cette requête fonctionne bien :
Code :
1
2
3
4
5
 
--with all parameters
SELECT c.name AS "NAME",s.order_date,s.total
FROM sales_order s,customer c
WHERE s.customer_id=c.customer_id AND c.name='&NAME' AND s.order_date BETWEEN '&DATE_MIN' AND '&DATE_MAX';
je dois modifier cette requête afin que, si l'utilisateur ne saisi pas les paramètres lorsque le prompt lui demande, j'affiche la liste de tous les clients et sur la plage de dates comprise entre la plus petites et la plus grande date existant dans la table.

Voici ma requête:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
SELECT c.name AS "NAME",
s.order_date,
s.total
FROM sales_order s,customer c
WHERE s.customer_id=c.customer_id 
--with c.name parameter is null or not null
AND c.name=(SELECT CASE 
WHEN '&NAME'='' THEN (SELECT c.name AS "NAME") 
WHEN '&NAME' IS NOT NULL THEN  (SELECT '&NAME' AS "NAME"))
AND s.order_date 
--with &DATE_MIN and &DAT_MAX are null or not null
BETWEEN
(SELECT case
WHEN '&DATE_MIN'='' THEN (SELECT min(s.order_date))
WHEN '&DATE_MIN' IS NOT NULL THEN '&DATE_MIN')
AND
(SELECT case
WHEN '&DATE_MAX'='' THEN (SELECT max(s.order_date))
WHEN '&DATE_MAX'IS NOT NULL THEN '&DATE_MAX');
bb5477 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2007, 16h53   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
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 319
Points : 5 837
Points : 5 837
Code :
1
2
 
AND c.name = Nvl('&NAME',c.name)
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2007, 17h16   #3
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 37
Points : 14
Points : 14
merci, ça marche!! genial
bb5477 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 07h36.


 
 
 
 
Partenaires

Hébergement Web