IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[SQL2K5] Clause Where variant en fonction d'un paramètre


Sujet :

MS SQL Server

  1. #1
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut [SQL2K5] Clause Where variant en fonction d'un paramètre
    Bonjour à tous,
    Je cherche à écrire une procédure stockée qui, en fonction du paramètre ne va pas restreindre selon le même nombre de champs.

    Si le paramètre vaut 1,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WHERE 
    			ISNUMERIC(Q1) = 1
    		AND ISNUMERIC(Q2) = 1
    		AND ISNUMERIC(Q3) = 1
    		AND ISNUMERIC(Q4) = 1
    		AND ISNUMERIC(Q5) = 1
    		AND ISNUMERIC(Q6) = 1
    Si le paramètre vaut 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    WHERE 
    			ISNUMERIC(Q1) = 1
    		AND ISNUMERIC(Q2) = 1
    		AND ISNUMERIC(Q3) = 1
    		AND ISNUMERIC(Q4) = 1
    		AND ISNUMERIC(Q5) = 1
    		AND ISNUMERIC(Q6) = 1
    		AND ISNUMERIC(Q7) = 1
    		AND ISNUMERIC(Q8) = 1
    le tout est utilisé dans un UNPIVOT de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    SELECT
     
    .......
    	, quest.NUM_QUESTION AS NumQuestion
    	, quest.LIB_QUESTION AS LibQuestion
    	, NoteEval
    FROM 
    	dbo.T_NRM_INSCRIPTIONS ins
    .....
     
    	JOIN (SELECT 
    		eval.N_INSCRIPTION, eval.EVAL_CODE_STAGE, eval.EVAL_CODE_SESSION
    		, N_TYPE_QUEST
    		, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14
    	FROM Prn_Dwh_Acc.dbo.T_ACC_T_EVALUATIONS eval
    	WHERE 
    			ISNUMERIC(Q1) = 1
    		AND ISNUMERIC(Q2) = 1
    		AND ISNUMERIC(Q3) = 1
    		AND ISNUMERIC(Q4) = 1
    		AND ISNUMERIC(Q5) = 1
    		AND ISNUMERIC(Q6) = 1
    		AND N_TYPE_QUEST = @NumTypeQuestion) p
    UNPIVOT 
    	(NoteEval FOR Question IN (Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14)) AS unpvt
    		ON unpvt.N_INSCRIPTION = ins.Inscription_Id
    	JOIN Prn_Dwh_Acc.dbo.T_ACC_T_QUESTIONS quest
    		ON quest.N_TYPE_QUEST = unpvt.N_TYPE_QUEST
    WHERE 
    	'Q' + cast(quest.NUM_QUESTION AS VARCHAR(4))= Question
    .......
    C'est en fonction de ce paramètre @NumTypeQuestion que je veux récupérer les question 1 à 6 ou 1 à 14.

    Si je ne trouve pas je pensais faire une fonction en amont avec IF tout bête et qui appelle ensuite 2 PS différentes, mais je ne trouve aps ça très propre.

    Merci à vous.

  2. #2
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Finalement j'ai modifié cela et fais beaucoup plus simplement, en testant le IsNumeric sur ma valeur une fois pivoté.

Discussions similaires

  1. Clause Where en fonction de la valeur d'un champs
    Par gb-ch dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 01/01/2007, 15h45
  2. [Fonctions analytiques] - Clause Where / Having
    Par jacquesh dans le forum Oracle
    Réponses: 5
    Dernier message: 06/10/2006, 13h29
  3. Vue avec clause Where en fonction du USER
    Par lunab54 dans le forum Oracle
    Réponses: 8
    Dernier message: 29/08/2006, 18h39
  4. [8.i]Fonctions dates et clause Where
    Par jdotti dans le forum Oracle
    Réponses: 6
    Dernier message: 03/08/2006, 18h07
  5. fonction booleenne dans une clause where ?
    Par user_h dans le forum Oracle
    Réponses: 1
    Dernier message: 20/10/2005, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo