Requete IF dans un where
Résolu
Juduno
-
Juduno -
Juduno -
Bonjour ,
voilà mon petit soucis actuel
je fais une requete comme celle-ci
et je dois l'améliorer avec un if dans le where
j'ai essayer ça
merci d'avance
voilà mon petit soucis actuel
je fais une requete comme celle-ci
SELECT rx.tyre_id, rx.tyre_nom, rx.tyre_abr, rx.tyre_couleur_rvb , COUNT(*) AS nb_regle , SUM(rx.ActifToday) AS nb_actif_today, SUM(rx.ActifPast) AS nb_actif_past, SUM(rx.ActifFutur) AS nb_actif_futur , Min(rx.taux) as valeur_taux_min, MAX(rx.taux) as valeur_taux_max , Min(rx.fixe) as valeur_fixe_min, MAX(rx.fixe) as valeur_fixe_max , rx.valeur_type , rx.devi_abr , j.jour_index AS num_semaine -- index des périodes de dates demandés(les colonnes du DashboardRegle) , MIN(rsa.enti_id) as sur_enti_id -- on veut savoir si le groupe de règles est paramétré sur au moins un partenaire (donc min suffit) , p.item_id AS item_id -- entêtes des lignes du DashboardRegle FROM regl rx INNER JOIN dbo.regle_s_applique rsa ON rx.regl_id = rsa.regl_id INNER JOIN @periods j ON j.jour_d_fin > rx.regl_d_debut_obligatoire AND j.jour_d_debut < rx.regl_d_fin_obligatoire -- regroupement des règles pour les périodes de dates demandés(les colonnes du DashboardRegle) LEFT JOIN @tmpIds p ON rsa.prest_id = p.prest_id -- pas en INNER JOIN pour aussi avoir les règles paramétrés sur partenaire WHERE rx.regl_d_fin_obligatoire > @debut AND rx.regl_d_debut_obligatoire < @fin -- limite sur les dates de la règle AND (rx.regl_actif = 1 OR @nonActive = 1) -- limite aux règles active, sauf si précisé qu'on les veut toutes AND (rx.tyre_id IN (SELECT id FROM @tyreIds) OR NOT EXISTS (SELECT 1 FROM @tyreIds)) -- filtre les types de règles si renseigné --AND (rsa.enti_id IN (SELECT id FROM @entiIds) OR NOT EXISTS (SELECT 1 FROM @entiIds))-- OR rsa.enti_id IS NULL) -- filtre les partenaires s'ils sont renseignés et demandés (09/05/17 EH filtre fort pour n'avoir que les partenaires demandés) AND (rsa.enti_id IN (SELECT id FROM @entiIds) OR NOT EXISTS (SELECT 1 FROM @entiIds) OR (@EntiNULL = 1 AND rsa.enti_id IS NULL)) -- 11/05/2017 EH filtre les partenaires AND (rsa.prest_id = p.prest_id OR rsa.prest_id IS NULL) -- les règles paramétrés sur les prestations voulues, soit les règles paramétrés sur partenaire AND (rsa.typp_id_du_produit IS NULL OR rsa.typp_id_du_produit IN (SELECT typp_id FROM @tmpIds)) GROUP BY rx.tyre_id, rx.tyre_nom, rx.tyre_abr, rx.tyre_couleur_rvb , rx.devi_abr , rx.valeur_type , p.item_id , j.jour_index ORDER BY j.jour_index, rx.tyre_id, rx.devi_abr, item_id, nb_regle, valeur_taux_min, valeur_fixe_min, valeur_taux_max, valeur_fixe_max -- ORDER BY pour afficher les règles toujours dans le même sens
et je dois l'améliorer avec un if dans le where
j'ai essayer ça
AND rsa.camt_id = (CASE WHEN @CamtId > 0 THEN @CamtId END)mais le faite est que quand mon @CamtId <0 je voudrais qu'il ne me fasse pas le and je sais pas trop comment faire si vous avez des idées
merci d'avance
A voir également:
- Requete IF dans un where
- Where is it - Télécharger - Gestion de fichiers
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Requete sql pix - Forum PHP
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
- Erreur de requete facebook - Forum Facebook
1- ça me fais une erreur sur le "=" (syntaxe incorrecte)
2 - du coup j'ai essayé en mettant mais pas mieux en faite ca me retourne rien ^^
et qui fonctionne !!! :)