begin process at 2012 05 26 11:57:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Requêtes

 > 

case when + Selection d'une valeur définie


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

case when + Selection d'une valeur définie

mardi 3 novembre 2009 à 19:23:35 | case when + Selection d'une valeur définie

imco20030

Bonjour,

Je suis en train de corriger un rapport existant et il y a une sélection que je voudrais changer.
Ce rapport est assez complexe et pour avoir une vision plus claire de mon problème, j'ai juste sélectionné les champs importants.

Voici la query simplifié:

select
sl.ship_id, o.ordnum, o.batch_nr,
<gras>case when o.ordnum = (select min(o3.ordnum) from ord o3 left join shipment_line sl3 on (o3.ordnum = sl3.ordnum) where sl3.ship_id = sl.ship_id)
then 'Calcul'
else 'invalid' + (select min(o3.batch_nr) from ord o3 left join shipment_line sl3 on (o3.ordnum = sl3.ordnum) where sl3.ship_id = sl.ship_id) end Total price</gras>
from ord o

cette query me donne le résultat suivant:
Ship ID order nr batch nr total price
123456 0551111 911 100 EUR
123456 0551112 902 Invalid 902
123456 0551113 905 invalid 902

Analyse du 'select case when':
Lorsque ordnum = min(ordnum) pour les ordnum ayant le même ship_id, alors cela donne 'calcul'. Dans mon exemple, cela équivaut à 100 EUR.
Sinon, cela sélectionne 'invalid' + la plus petite valeur de 'batch_nr' pour les ordnum ayant le même ship_id

Mon souhait est de changer le 'else' afin de sélectionner le batch_nr pour lequel le calcul est présent (dans cet example: sélectionner le batch_nr pour lequel 100 EUR est calculé c.à.d 911).

Le résultat souhaité serait celui-ci:

Ship ID order nr batch nr(reffld_5) total price
123456 0551111 911 100 EUR
123456 0551112 902 invalid 911
123456 0551113 905 invalid 911


J’ai tenté de changer la query en appliquant la logique suivante mais cela me retourne aucune valeur :
case when o.ordnum = (select min(o3.ordnum) from ord o3 left join shipment_line sl3 on (o3.ordnum = sl3.ordnum) where sl3.ship_id = sl.ship_id)
then 'calcul'
else 'invalid' + (select (o3.btach_nr) from ord o3 left join shipment_line sl3 on (o3.ordnum = sl3.ordnum) where sl3.ship_id = sl.ship_id and o.ordnum = (select min(o3.ordnum) from ord o3 where sl3.ship_id = sl.ship_id) )
end

Merci pour votre aide.

imco20030



Cette discussion est classée dans : id, ship, o3, ordnum, sl3


Répondre à ce message

Sujets en rapport avec ce message

if dans une procédure stocké ? [ par jesusonline ] Bonjour, je ne connais pas encore SQLj'ai une table articles qui a un champ ID et je voudrais une fonction stocké qui prend en paramètre un ID et qui Requete utilisant un IF (?) [ par Gamer_man ] Bonjour :)J'ai un petit probleme avec une requete...J'explique un peu :Sur mon site, il est possible de poster des commentaires en etant membre ou en 2 liens entre 2 tables [ par fstyle ] Bonjour/soirJe suis en train de créer un système pour gérer ma comptabilité ...et je suis devant un problème !Dans mon mld, il y a 2 tables : t_compta Faire plusieurs if dans un procedure stockee [ par chris81 ] bonjour,comment puis je faire pour verifier plusiseurs if dans la meme procedure stockee c'est a direif not exist(SELECT Id FROM...) et if not exists( Select sans doublon avec date la plus recente [ par ironnyc ] Bonjour a tous!je cherche a faire une requete Select avec une base MySql sur la table suivante: #Table "historique"+-----+-------------+------------+| Tri, comment??? [ par Fildomen ] Salut j'ai par exemple une table ou sont stocké des gens avec leur id (TGens), et une autre qui contient les noms de leur enfant (TEnfants)  (id du pè 3 tables 1 requête [ par kclito ] bonjours, (j'avoue que je ne savais pas si je devais mettre ça dans le forum php ou sql ....) Je vous explique mon problème J'ai 3 tables CATEGORIE requete SQL [ par djodjo07 ] Je cherche une requete SQL pour trier mes ID.. en fait j'aimerais par exemple récupérer des données a partir de l'ID 40 ! Je débute ! Merci une requete qui me casse la tête [ par chmouette ] Salut les gens!Mon problème est purement SQL. J'ai une table Ma Table avec des champs tels que :+-------------------------+ !            MaTable  &nbs auto increment [ par bob ] Bonsoir ! Alors voila, j'ai une question qui va etre surement trés simple pour vousvoila le sql de mla table CREATE TABLE `blogs` ( `id` smallint(6)


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales