Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
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 12/06/2007, 16h00   #1
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 36
Points : 16
Points : 16
Par défaut question de requete

Bonjour,

je voudrais soumettre a la connaissance collective un problème de requête...

prenons la requête suivante:

select count(*)
from Trades
where Trades.Trade_ID = 1234
and Trades.Trade_Sts in ('INI','SEND')

Cette requête retourne zéro:
- si le trade_ID 1234 n'existe pas
- si le trade_ID=1234 existe mais avec un statut différent de INI ou SEND.

savez vous si il est possible de construire une requête unique qui retourne:
- NULL si Trade_ID=1234 n'existe pas
- zero si Trade_ID=1234 existe mais avec un statut different de INI ou SEND
- le décompte des lignes ayant Trade_ID=1234 et un statut égal a INI ou SEND

sans passer par une solution du genre IF ELSE et 2 requetes?

merci par avance pour vos lumières.
Cordialement
Jarod
jarod_bx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 16h09   #2
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
Je ne sais pas si la fonction "decode" existe avec sybase mais vous pouvez vous inspirez de ceci

Code :
1
2
3
SELECT sum(decode(Trades.Trade_Sts,'INI',1,'SEND',1, 0))
FROM Trades
WHERE Trades.Trade_ID = 1234
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 16h35   #3
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 36
Points : 16
Points : 16
Citation:
Envoyé par argoet
Je ne sais pas si la fonction "decode" existe avec sybase mais vous pouvez vous inspirez de ceci

Code :
1
2
3
SELECT sum(decode(Trades.Trade_Sts,'INI',1,'SEND',1, 0))
FROM Trades
WHERE Trades.Trade_ID = 1234
excellente idee merci beaucoup

en fait decode n'existe pas sous sybase mais le code suivant est équivalent et fonctionne :

Code :
1
2
3
4
5
6
7
8
SELECT sum(
case
  when Trades.Trade_Sts IN ('INI','SEND') then 1
  else 0
end
)
FROM Trades
WHERE Trades.Trade_ID = 1234
merci encore
jarod
jarod_bx 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 20h19.


 
 
 
 
Partenaires

Hébergement Web