Accueil > Forum > > > > probleme de CASE sous sql (base de données sql server)
probleme de CASE sous sql (base de données sql server)
vendredi 10 septembre 2004 à 14:51:12 |
probleme de CASE sous sql (base de données sql server)

niek
|
bijour a tous!! je suis en train de retoucher des procédures stockées en sql, et g un prob de CASE. j en ai 2 imbriqués l'un ds l'autre et il y a une couille avec le END et VIRGULE de fin. voici : /CASE d.type / WHEN 'A' THEN ( sum (la.quantite * la.prixunitaire)) / ELSE / CASE d.PrevisionDepense WHEN 'CHL_NULL' THEN d.montant / ELSE d.PrevisionDepense / END / END AS montant, Ceci etant une colonne de table défini dans un SELECT. OU est le probleme? c ce ke je me demande et si qqun a la reponse ce serait mega cool!!!!!!!!!! le codeur-quiche
|
|
dimanche 12 septembre 2004 à 22:32:10 |
Re : probleme de CASE sous sql (base de données sql server)

fabrice69
|
Issu de la MSDN SQL Server :
Référence de Transact-SQL
CASE Évalue une liste de conditions et renvoie l'une des expressions de résultats possibles.
La fonction CASE peut avoir deux formats :
la fonction CASE simple détermine le résultat en comparant une expression à un jeu d'expressions simples ;
La fonction CASE recherchée détermine le résultat en évaluant un jeu d'expressions booléennes. Les deux formats prennent en charge un argument ELSE facultatif.
Syntaxe Fonction CASE simple
CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END
Fonction CASE recherchée :
CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END
Arguments input_expression
Expression évaluée à l'aide de la fonction CASE simple. Il peut s'agir de toute expression valide de Microsoft® SQL Server?.
WHEN when_expression
Expression simple à laquelle l'argument input_expression est comparé à l'aide de la fonction CASE simple. Il peut s'agir de toute expression valide de SQL Server. Le type de données de l'argument input_expression et celui de chacun des arguments when_expression doivent être identiques ou permettre une conversion implicite.
n
Espace réservé indiquant que plusieurs clauses WHEN when_expression THEN result_expression ou WHEN Boolean_expression THEN result_expression peuvent être utilisées.
THEN result_expression
Expression renvoyée lorsque la comparaison input_expression = when_expression est vérifiée, ou lorsque l'argument boolean_expression est vérifié. L'argument result_expression peut être toute expression valide de SQL Server.
ELSE else_result_expression
Expression renvoyée lorsqu'aucune opération de comparaison n'est vérifiée. Si cet argument est omis et qu'aucune opération de comparaison n'est vérifiée, CASE renvoie la valeur NULL. L'argument else_result_expression peut être toute expression valide de SQL Server. Le type de données de l'argument else_result_expression et celui de tout argument result_expression doivent être identiques ou permettre une conversion implicite.
WHEN Boolean_expression
Expression booléenne évaluée lorsque la fonction CASE recherchée est utilisée. L'argument boolean_expression peut être n'importe quelle expression booléenne valide.
Types de résultats Renvoie le type de priorité le plus élevé du jeu de types contenu dans result_expression et l'argument facultatif else_result_expression. Pour plus d'informations, reportez-vous à Priorité des types de données.
Valeurs de résultat Fonction CASE simple Évalue input_expression, puis évalue dans l'ordre spécifié input_expression = when_expression pour chaque clause WHEN.
Renvoie l'argument result_expression de la première comparaison (input_expression = when_expression) qui est vérifiée.
Si aucune comparaison input_expression = when_expression n'est vérifiée, SQL Server renvoie else_result_expression si une clause ELSE est spécifiée ou, à défaut de clause ELSE, la valeur NULL est renvoyée. Fonction CASE recherchée : Évalue, dans l'ordre spécifié, Boolean_expression pour chaque clause WHEN.
Renvoie result_expression du premier argument Boolean_expression qui est vérifié.
Si aucun argument Boolean_expression n'est vérifié, SQL Server renvoie else_result_expression si une clause ELSE est spécifiée, ou une valeur NULL dans le cas contraire. Exemple A. Utilisation d'une instruction SELECT avec une fonction CASE simple Dans une instruction SELECT, une fonction CASE simple permet uniquement de vérifier si les arguments sont égaux ; aucune comparaison n'est effectuée. L'exemple suivant utilise la fonction CASE pour modifier la présentation des catégories de livres en vue d'en faciliter la lecture.
USE pubs GO SELECT Category = CASE type WHEN 'popular_comp' THEN 'Popular Computing' WHEN 'mod_cook' THEN 'Modern Cooking' WHEN 'business' THEN 'Business' WHEN 'psychology' THEN 'Psychology' WHEN 'trad_cook' THEN 'Traditional Cooking' ELSE 'Not yet categorized' END, CAST(title AS varchar(25)) AS 'Shortened Title', price AS Price FROM titles WHERE price IS NOT NULL ORDER BY type, price COMPUTE AVG(price) BY type GO
Voici le jeu de résultats obtenu :
Category Shortened Title Price ------------------- ------------------------- -------------------------- Business You Can Combat Computer S 2.99 Business Cooking with Computers: S 11.95 Business The Busy Executive's Data 19.99 Business Straight Talk About Compu 19.99
avg ========================== 13.73
Category Shortened Title Price ------------------- ------------------------- -------------------------- Modern Cooking The Gourmet Microwave 2.99 Modern Cooking Silicon Valley Gastronomi 19.99
avg ========================== 11.49
Category Shortened Title Price ------------------- ------------------------- -------------------------- Popular Computing Secrets of Silicon Valley 20.00 Popular Computing But Is It User Friendly? 22.95
avg ========================== 21.48
Category Shortened Title Price ------------------- ------------------------- -------------------------- Psychology Life Without Fear 7.00 Psychology Emotional Security: A New 7.99 Psychology Is Anger the Enemy? 10.95 Psychology Prolonged Data Deprivatio 19.99 Psychology Computer Phobic AND Non-P 21.59
avg ========================== 13.50
Category Shortened Title Price ------------------- ------------------------- -------------------------- Traditional Cooking Fifty Years in Buckingham 11.95 Traditional Cooking Sushi, Anyone? 14.99 Traditional Cooking Onions, Leeks, and Garlic 20.95
avg ========================== 15.96
(21 row(s) affected)
B. Utilisation d'une instruction SELECT avec une fonction CASE simple et recherchée Dans une instruction SELECT, la fonction CASE recherchée permet de remplacer des valeurs dans le jeu de résultats, en fonction des valeurs de comparaison. L'exemple suivant donne le prix (colonne money) sous la forme d'un commentaire de texte basé sur la fourchette de prix d'un livre.
USE pubs GO SELECT 'Price Category' = CASE WHEN price IS NULL THEN 'Not yet priced' WHEN price < 10 THEN 'Very Reasonable Title' WHEN price >= 10 and price < 20 THEN 'Coffee Table Title' ELSE 'Expensive book!' END, CAST(title AS varchar(20)) AS 'Shortened Title' FROM titles ORDER BY price GO
Voici le jeu de résultats obtenu :
Price Category Shortened Title --------------------- -------------------- Not yet priced Net Etiquette Not yet priced The Psychology of Co Very Reasonable Title The Gourmet Microwav Very Reasonable Title You Can Combat Compu Very Reasonable Title Life Without Fear Very Reasonable Title Emotional Security: Coffee Table Title Is Anger the Enemy? Coffee Table Title Cooking with Compute Coffee Table Title Fifty Years in Bucki Coffee Table Title Sushi, Anyone? Coffee Table Title Prolonged Data Depri Coffee Table Title Silicon Valley Gastr Coffee Table Title Straight Talk About Coffee Table Title The Busy Executive's Expensive book! Secrets of Silicon V Expensive book! Onions, Leeks, and G Expensive book! Computer Phobic And Expensive book! But Is It User Frien
(18 row(s) affected)
C. Utilisation de CASE avec SUBSTRING et SELECT L'exemple suivant utilise CASE et THEN pour produire une liste d'auteurs, ainsi que les numéros d'identification et les types de livres écrits par chaque auteur.
USE pubs SELECT SUBSTRING((RTRIM(a.au_fname) + ' '+ RTRIM(a.au_lname) + ' '), 1, 25) AS Name, a.au_id, ta.title_id, Type = CASE WHEN SUBSTRING(ta.title_id, 1, 2) = 'BU' THEN 'Business' WHEN SUBSTRING(ta.title_id, 1, 2) = 'MC' THEN 'Modern Cooking' WHEN SUBSTRING(ta.title_id, 1, 2) = 'PC' THEN 'Popular Computing' WHEN SUBSTRING(ta.title_id, 1, 2) = 'PS' THEN 'Psychology' WHEN SUBSTRING(ta.title_id, 1, 2) = 'TC' THEN 'Traditional Cooking' END FROM titleauthor ta JOIN authors a ON ta.au_id = a.au_id
Voici le jeu de résultats obtenu :
Name au_id title_id Type ------------------------- ----------- -------- ------------------- Johnson White 172-32-1176 PS3333 Psychology Marjorie Green 213-46-8915 BU1032 Business Marjorie Green 213-46-8915 BU2075 Business Cheryl Carson 238-95-7766 PC1035 Popular Computing Michael O'Leary 267-41-2394 BU1111 Business Michael O'Leary 267-41-2394 TC7777 Traditional Cooking Dean Straight 274-80-9391 BU7832 Business Abraham Bennet 409-56-7008 BU1032 Business Ann Dull 427-17-2319 PC8888 Popular Computing Burt Gringlesby 472-27-2349 TC7777 Traditional Cooking Charlene Locksley 486-29-1786 PC9999 Popular Computing Charlene Locksley 486-29-1786 PS7777 Psychology Reginald Blotchet-Halls 648-92-1872 TC4203 Traditional Cooking Akiko Yokomoto 672-71-3249 TC7777 Traditional Cooking Innes del Castillo 712-45-1867 MC2222 Modern Cooking Michel DeFrance 722-51-5454 MC3021 Modern Cooking Stearns MacFeather 724-80-9391 BU1111 Business Stearns MacFeather 724-80-9391 PS1372 Psychology Livia Karsen 756-30-7391 PS1372 Psychology Sylvia Panteley 807-91-6654 TC3218 Traditional Cooking Sheryl Hunter 846-92-7186 PC8888 Popular Computing Anne Ringer 899-46-2035 MC3021 Modern Cooking Anne Ringer 899-46-2035 PS2091 Psychology Albert Ringer 998-72-3567 PS2091 Psychology Albert Ringer 998-72-3567 PS2106 Psychology
(25 row(s) affected)
Voir aussi
Conversion de type de données
Types de données
Expressions
SELECT
Fonctions système
UPDATE
WHERE
©1988-2000 Microsoft Corporation. Tous droits réservés.
Romelard Fabrice (Alias F___)
|
|
lundi 13 septembre 2004 à 10:38:21 |
Re : probleme de CASE sous sql (base de données sql server)

niek
|
merci pour cette reponse longue et instructive....
donc si g bien compris, c impossible de mettre une variable apres le THEN, du style:
//CASE machin //WHEN 'A' THEN table_truc.variable_untel
paske dans ce ke vous m avez donné, apres le then il n y a ke des expressions "clavier". merci de me repondre
le codeur-quiche
|
|
lundi 13 septembre 2004 à 11:36:34 |
Re : probleme de CASE sous sql (base de données sql server)

fabrice69
|
Voila un exemple avec des champs
SELECT CASE type WHEN 'S' THEN name WHEN 'P' THEN CAST(id AS NVARCHAR(50)) ELSE CAST(info AS NVARCHAR(50)) END AS TestTOTO
FROM dbo.sysobjects
Dans ta requette il faut enlever les ELSE qui ne servent à rien dans ton cas. Le ELSE est à mettre une seule fois à la fin (en cas où la valeur ne remplit aucune des conditions précédentes).
Romelard Fabrice (Alias F___)
|
|
lundi 13 septembre 2004 à 14:46:09 |
Re : probleme de CASE sous sql (base de données sql server)

niek
|
merci merci!! ca fait vraiment plaisir de pouvoir trouver de l'aide  le codeur-quiche
|
|
lundi 13 septembre 2004 à 16:27:15 |
Re : probleme de CASE sous sql (base de données sql server)

niek
|
re_bonjour!!
chuis dsl de faire encore mon lourd ms g un aut prob:
je dois aller chercher des lignes ds une table (reception) avec un lien sur la table DED par l'id_ded. (ded c demande d'achat)
l inconvénient, c ke s'il n'y a pas de ded n° X ds la table reception, cette ded ne sera pas affichée. Je voudrais savoir comment on code la condition de jointure entre la table reception et la table ded pour que, m si il n'y a pas de ded portant le n° X ds la table reception mais que cette ded apparait dans la table ded, on ai qud m la ded avec rien ds la colonne reception en sortie de procédure?
j espere que vous avez compris, merci pour la reponse future!!!
le codeur-quiche
|
|
lundi 13 septembre 2004 à 16:56:06 |
Re : probleme de CASE sous sql (base de données sql server)

fabrice69
|
Il faut utiliser le Outer Join (Left ou Right suivant le besoin).
Allez sur le site : - http://sqlpro.developpez.com/
Vous aurez toute l'aide nécessaire pour le langage SQL
Romelard Fabrice (Alias F___)
|
|
mardi 14 septembre 2004 à 09:07:16 |
Re : probleme de CASE sous sql (base de données sql server)

niek
|
merci pour votre aide, elle m'est tres precieuse!!!
le codeur-quiche
|
|
Cette discussion est classée dans : base, end, sql, probleme, case
Répondre à ce message
Sujets en rapport avec ce message
probleme de connexion a une base de donnee [ par coccolata ]
salut,je developpe une application asp.net c# avec une base de donnee sql server 2005.en premier temps j'execute mon site sur le mini server du visual
comment attacher une base sql dans asp.net entreprise manager [ par erassia ]
bonjour,comment attacher une base sql dans asp.net entreprise managermerci.:Assia:.
Probleme de connexion a la base [ par allia007 ]
Bonjour, j'ai le nom du server le nom de la base le user et le mot de passe et je ne sais pas comment faire pour me connecté a cette base. je ne sa
probleme image+sql [ par mrirrou ]
bsrj'ai une petite fonction qui permet de recuperer une image de mon disque dure est de l'enregistrer dans ma Bd, (il y'a un champ type image), bon to
Probleme sql server et asp.net [ par dedebis84 ]
Bonjour,J'ai un probleme plutot bizard, et je dois l'avouer c'est la premiere fois qu'il se presente.Voila Je fais une insertion dans la base de donné
enregitrement du fichier texte dans la base de donnée sql [ par hhhouda ]
Bonjour à tous ,je cherche un moyen de pouvoir sauvegarder n'importe quel fichier dans ma base de données SQL Server 2000/2005. Je travaille en C#.J'a
ASP SQL [ par kryshnar ]
Bonjour, je cherche a effectuer une connexion sur une base de données avec un test qui me permet de savoir si ou non cela a fonctionné. j'ai déjà fais
Publipostage avec case à cocher [ par bounette ]
Bonne soirée,Je travail sous XPJ'ai une base de donnée en Access 2000 dans laquelle il y a des champs oui-non<?xml:names
Lecture de plusieurs données dans ma base SQL [ par olivierdn ]
Bonjour, Je suis débutant en .NET et j'ai pas mal galéré pour trouver des bons tutos sur le C#. J'arrive à lire une donnée dans ma base de donnée. Ma
probleme dajout une base de donnée (*.mdf) soussqsl server 2005 [ par perrotta ]
bonjour , j'ai voudrais ajouté une base de donnée .mdf et j'ai hu se message d'erreur .([img]C:\Documents and Settings\adminis\Bureau[/img] sur l'ima
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|