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
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
- Requete sql pix ✓ - Forum MySQL
- Erreur de requete facebook - Forum Facebook
- Roxane cherche des informations pour écrire un rapport sur la diversité. avec un moteur de recherche généraliste, elle souhaite limiter les résultats de sa recherche aux pages de l’organisation internationale de la francophonie. quelle requête doit-elle taper dans le champ de recherche ? - Forum Réseaux sociaux
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 !!! :)