IF dans un SELECT (sql server 2000)

cs_niek Messages postés 10 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 16 septembre 2004 - 10 sept. 2004 à 16:05
cs_AshenShugar Messages postés 202 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 22 janvier 2009 - 7 oct. 2004 à 10:57
c encore moi,

je me suis rendu compte ke apparemment, on ne peut utiliser des variables après les THEN de CASE,

dc eske qqun sait comment on fait pour integrer des IF dans la déclaration d'une colonne de table (un SELECT koi..)?????

vite, je suis en galère

le codeur-quiche
A voir également:

2 réponses

cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
12 sept. 2004 à 22:30
Issu de la doc MSDN SQL Server :

Référence de Transact-SQL


IF...ELSE
Impose les conditions d'exécution d'une instruction Transact-SQL. L'instruction Transact-SQL qui suit le mot clé IF et sa condition est exécutée si la condition est remplie (lorsque l'expression booléenne renvoie la valeur TRUE). Le mot clé facultatif ELSE introduit une instruction Transact-SQL de remplacement exécutée lorsque la condition IF n'est pas remplie (si l'expression booléenne renvoie FALSE).

Syntaxe
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]

Arguments
Boolean_expression

Expression qui renvoie la valeur TRUE ou FALSE. Si l'expression booléenne contient une instruction SELECT, cette dernière doit être mise entre parenthèses.

{sql_statement | statement_block}

Toute instruction ou tout groupe d'instructions Transact-SQL tels que définis dans un bloc d'instructions. À moins que vous n'utilisiez un bloc d'instructions, la condition IF ou ELSE ne peut affecter les performances que d'une seule instruction Transact-SQL. Pour définir un bloc d'instructions, utilisez les mots clés de contrôle de flux BEGIN et END. Les instructions CREATE TABLE ou SELECT INTO doivent se référer au même nom de table si elles sont utilisées dans les deux aires IF et ELSE du bloc IF...ELSE.

Notes
Vous pouvez utiliser les constructions IF...ELSE dans des lots, dans des procédures stockées (dans lesquelles ces constructions sont souvent utilisées pour tester l'existence de certains paramètres) et dans des requêtes appropriées.

Les tests de la condition IF peuvent être imbriqués après une autre condition IF ou après une condition ELSE. Le nombre de niveaux d'imbrication est illimité.

Exemple
A. Utilisation d'un bloc IF...ELSE
Cet exemple illustre une condition IF avec un bloc d'instructions. Si le prix moyen du titre n'est pas inférieur à 15 $, il imprime le message suivant : Prix moyen du titre supérieur à 15 $).

USE pubs

IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
PRINT 'Average title price is more than $15.'

Voici le jeu de résultats obtenu :

The following titles are excellent mod_cook books:

Title
-----------------------------------
Silicon Valley Gastronomic Treats
The Gourmet Microwave

(2 row(s) affected)

B. Utilisation de plusieurs blocs IF...ELSE
Cet exemple utilise deux blocs IF. Si le prix moyen du titre n'est pas inférieur à 15 $, il imprime le message suivant : Prix moyen du titre supérieur à 15 $. Si le prix moyen des livres de cuisine moderne est supérieur à 15 $, le système imprime l'instruction selon laquelle les livres de cuisine moderne sont chers.

USE pubs

IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
BEGIN
PRINT 'The following titles are expensive mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END

Voir aussi

ALTER TRIGGER

BEGIN...END

CREATE TABLE

CREATE TRIGGER

ELSE (IF...ELSE)

END (BEGIN...END)

SELECT

WHILE

©1988-2000 Microsoft Corporation. Tous droits réservés.

Romelard Fabrice (Alias F___)
0
cs_AshenShugar Messages postés 202 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 22 janvier 2009 1
7 oct. 2004 à 10:57
J'ai jamais eu l'occasion de bosser sur la version 2000, mais je sais qu'avec la version 7, il y a un truc du style :

SELECT MAchin1, Case when Machin2 = Condition then Machin2 else Machin3 end case, MAchin4 FRom GROUPE_MACHIN

lol j'aime les machins
0
Rejoignez-nous