Vous n'êtes pas identifié(e).
Bonjour,
Je voudrais mettre une condition qui met une valeur dans un champs.
Je m'explique
Ma requette sort plusieur colonne:
"créditpotspe_inscmod"=0
creditpot_inscour =0
creditpot_inscour= 24
"créditpot_inscmod" =0
"CréditsModule" =0
Je voudrais valorisé dans une colonne finale (ici creditpot_final) avec une condition Case When la valeur de l'un des champs précédent selon qu'ils soient nulle ou pas.
ici il devrait afficher 24 dans creditpot_final.
Quelqu'un pourrais m'aider
Voici la condition que j'ai faites:
WHEN validite."PRE_POST"::text = 'MIM_MANAGEMENT_COURSES'::text then
case
when validite."créditpotspe_inscmod" is not null THEN validite."créditpotspe_inscmod"
WHEN validite."créditpotspe_inscmod" is null then validite.creditpot_inscour
when validite.creditpotspe_inscour is null then validite.creditpot_inscour
when validite.creditpot_inscour is null then validite."créditpot_inscmod"
when validite."créditpot_inscmod" is null then validite."CréditsModule"
end
END AS creditpot_final
Mais cela ne marche pas. dans creditpot_final j'ai 0
Voici mon code:
WITH cours AS (
SELECT inscription_cours.apprenant_id,
lip.ligne_parente_id,
sum(inscription_cours.nombre_credits_potentiels) AS creditpot_inscour,
--COALESCE(sum("Crédits potentiels.Inscription au cours"), 0::numeric) AS creditpot_inscour,
COALESCE(sum(inscription_cours.credits_potentiels_specifiques), 0::numeric) AS creditpotspe_inscour,
--COALESCE(sum("Crédits potentiels spécifiques.Inscription au cours"), 0::numeric) AS creditpotspe_inscour,
sum(
CASE
WHEN inscription_cours.est_validee_jury AND inscription_cours.est_verrouillee THEN inscription_cours.nombre_credits_obtenus_jury
ELSE 0::numeric
END) AS credits_obtenus
FROM t_inscriptions_cours inscription_cours
JOIN t_statuts_inscription statut_inscription ON statut_inscription.objet_id = inscription_cours.statut_inscription_id
JOIN t_cours cours_1 ON cours_1.objet_id = inscription_cours.cours_id
JOIN t_arborescences_scolarite ligne_elementaire_programme ON ligne_elementaire_programme.cours_id = cours_1.objet_id
JOIN t_arborescences_scolarite lip ON lip.objet_id = ligne_elementaire_programme.ligne_parente_id AND lip.arborescence_programme_id = 2401812
LEFT JOIN t_types_apprenant type_apprenant ON type_apprenant.objet_id = inscription_cours.type_apprenant_id
WHERE (statut_inscription.code::text <> ALL (ARRAY['INVISIBLE'::character varying::text, 'INSCRIT_AU_TITRE_DE'::character varying::text])) AND (type_apprenant.code IS NULL OR type_apprenant.code::text <> 'AUDITEUR'::text)
GROUP BY inscription_cours.apprenant_id, lip.ligne_parente_id
), app AS (
SELECT ae_app.attribut_valfloat,
inscription_app.apprenant_id
FROM t_inscriptions_programme inscription_app
JOIN t_groupes groupe_app ON groupe_app.objet_id = inscription_app.groupe_id AND groupe_app.code::text ~~ '____MIM_APPRENTI__'::text AND groupe_app.type_groupe_id = 12618784
JOIN t_donnees_float ae_app ON ae_app.objet_id = groupe_app.objet_id AND ae_app.attribut_id = 6580993
), modules_hors_mgt AS (
SELECT inscription_module.apprenant_id,
sum(
CASE
WHEN app.attribut_valfloat IS NOT NULL THEN inscription_module.nombre_credits_potentiels
WHEN module.code::text = 'MIM_OUTGOING'::text AND inscription_module.nombre_credits_obtenus_jury > 0::numeric THEN inscription_module.nombre_credits_obtenus_jury
WHEN module.code::text = ANY ('{MIM_CFX,MIM_ADV,MIM_OUTGOING,MIM_OPTION}'::text[]) THEN inscription_module.nombre_credits_potentiels
ELSE 0::numeric
END) AS credits_potentiels
FROM t_inscriptions_module inscription_module
JOIN t_individus apprenant_1 ON apprenant_1.objet_id = inscription_module.apprenant_id
JOIN t_modules module ON module.objet_id = inscription_module.module_id
LEFT JOIN app ON app.apprenant_id = apprenant_1.objet_id
WHERE module.code::text = ANY ('{MIM_CFX,MIM_ADV,MIM_OUTGOING,MIM_OPTION,MIM_SMN_APP_METIER,MIM_SMN_APP_DYNAMIQUE_PERSO,MIM_SMN_APP_DIAGNOSTIC,MIM_SMN_APP_CLOTURE}'::text[])
GROUP BY inscription_module.apprenant_id
), module_mim_management AS (
SELECT inscription_module.objet_id AS id_interne_aurion,
module.code AS "Code.Module",
apprenant.ind_particule AS "NUMELV.Apprenant",
inscription_module.objet_id AS "id.Inscription au module",
inscription_module.nombre_credits_potentiels AS "créditpot_inscmod",
inscription_module.credits_potentiels_specifiques AS "créditpotspe_inscmod",
apprenant.objet_id AS "id.Apprenant",
apprenant.ind_nom AS "Nom d'usage.Apprenant",
--COALESCE(sum("Crédits potentiels spécifiques.Inscription au cours"), 0::numeric) AS creditpotspe_inscour,
--COALESCE(sum("Crédits potentiels.Inscription au cours"), 0::numeric) AS creditpot_inscour,
module.nombre_credits AS "CréditsModule"
FROM ( SELECT o.objet_id,
o.apprenant_id,
o.module_id,
o.nombre_credits_potentiels,
o.taux_credits_obtenus,
o.est_validee,
o.est_verrouillee,
o.nombre_credits_obtenus,
o.classement,
o.moyenne,
o.note_alpha,
o.date_inscription,
o.nombre_points,
o.avec_note_eliminatoire,
o.note_ects,
o.moyenne_sans_rattrapage,
o.avec_rattrapage,
o.taux_remise,
o.statut_inscription_id,
o.validation_scola_id,
o.type_apprenant_id,
o.type_convention_id,
o.date_entree,
o.date_sortie,
o.absences_excusees,
o.heures_absences_excusees,
o.absences_non_excusees,
o.heures_absences_non_excusees,
o.moyenne_avant_absences,
o.non_valide_par_absence,
o.est_validee_jury,
o.moyenne_jury,
o.moyenne_alpha_jury,
o.classement_jury,
o.note_ects_jury,
o.nombre_credits_obtenus_jury,
o.calcul_scolarite_id,
o.choix_inscription_id,
o.est_non_noter,
o.entite_id,
o.gpa,
o.validee_par_compensation,
o.credits_potentiels_specifiques,
o.score,
o.gpa_jury,
o.echeancier_type_id,
o.numero_cve,
o.pas_de_cve,
o.exonere_de_cve,
o.motif_exoneration,
o.etat_cve_id,
o.lot_inscriptions_id
FROM t_inscriptions_module o
WHERE true) inscription_module
LEFT JOIN t_modules module ON module.objet_id = inscription_module.module_id
LEFT JOIN t_individus apprenant ON apprenant.objet_id = inscription_module.apprenant_id
WHERE true AND module.code::text = 'MIM_ELC'::text
), credits AS (
SELECT pp.pre_post AS "PRE_POST",
apprenant.objet_id AS apprenant_id,
apprenant.ind_particule AS numelv,
apprenant.ind_nom,
mode_admission.code AS mode_admission_code,
inscr_mim_elc.objet_id AS inscr_mim_elc_id,
-- CASE
-- WHEN mode_admission.code::text = 'VISITANT'::text THEN COALESCE(cours.creditpot_inscour, 0::numeric)
-- WHEN pp.pre_post::text = 'PRE2015_MIM'::text THEN GREATEST(100::numeric - modules_hors_mgt.credits_potentiels, 0::numeric)
-- WHEN pp.pre_post::text = 'POST2015_MIM'::text THEN GREATEST(90::numeric - modules_hors_mgt.credits_potentiels, 0::numeric)
-- WHEN pp.pre_post::text = 'REF2020_MIM'::text THEN GREATEST(94::numeric - modules_hors_mgt.credits_potentiels, 0::numeric)
-- WHEN pp.pre_post::text = 'POST2020_MIM'::text THEN GREATEST(94::numeric - modules_hors_mgt.credits_potentiels, 0::numeric)
-- WHEN pp.pre_post::text = 'MIM_MANAGEMENT_COURSES'::text and module_mim_management."créditpotspe_inscmod" is not null THEN module_mim_management."créditpotspe_inscmod"
--WHEN pp.pre_post::text = 'MIM_MANAGEMENT_COURSES'::text and module_mim_management."créditpotspe_inscmod" is null then cours.creditpotspe_inscour
--when pp.pre_post::text = 'MIM_MANAGEMENT_COURSES'::text and cours.creditpotspe_inscour is null then cours.creditpot_inscour
--when pp.pre_post::text = 'MIM_MANAGEMENT_COURSES'::text and cours.creditpot_inscour is null then module_mim_management."créditpot_inscmod"
--when pp.pre_post::text = 'MIM_MANAGEMENT_COURSES'::text and module_mim_management."créditpot_inscmod" is null then module_mim_management."CréditsModule"
--WHEN pp.pre_post::text = 'MIM_MANAGEMENT_COURSES'::text THEN module_mim_management."créditpotspe_inscmod"
-- ELSE 0::numeric
--END AS credits_potentiels,
COALESCE(cours.credits_obtenus, 0::numeric) AS credits_obtenus,
coalesce(cours.creditpot_inscour,0::numeric) as creditpot_inscour,
coalesce(creditpotspe_inscour,0::numeric) as creditpotspe_inscour,
COALESCE(module_mim_management."créditpotspe_inscmod",0::numeric) as "créditpotspe_inscmod",
COALESCE(module_mim_management."créditpot_inscmod",0::numeric) as "créditpot_inscmod",
COALESCE(module_mim_management."CréditsModule",0::numeric) as "CréditsModule"
FROM t_individus apprenant
JOIN t_inscriptions_programme inscription_diplome ON inscription_diplome.apprenant_id = apprenant.objet_id
JOIN t_statuts_inscription statut_diplome ON statut_diplome.objet_id = inscription_diplome.statut_inscription_id AND (statut_diplome.code::text <> ALL (ARRAY['DECEDE'::character varying::text, 'DEMISSION'::character varying::text, 'EXCLUS'::character varying::text, 'DIPLOME'::character varying::text, 'NON_DIPLOME'::character varying::text]))
JOIN t_groupes diplome ON diplome.objet_id = inscription_diplome.groupe_id AND diplome.code::text = 'MIM'::text
JOIN t_relations dma ON dma.source_id = inscription_diplome.objet_id AND dma.relation_nom::text = 'inscription_programme-moded_admission.client§1531414'::text
JOIN t_objets mode_admission ON mode_admission.objet_id = dma.dest_id AND mode_admission.type::text = 'moded_admission.client'::text AND NOT mode_admission.efface
JOIN t_inscriptions_module inscr_mim_elc ON inscr_mim_elc.apprenant_id = apprenant.objet_id
JOIN t_modules mim_elc ON mim_elc.objet_id = inscr_mim_elc.module_id AND mim_elc.code::text = 'MIM_ELC'::text
JOIN ( SELECT am.apprenant_id,
module.code AS pre_post,
module.objet_id AS pre_post_id
FROM t_apprenants_modules am
JOIN t_modules module ON module.objet_id = am.module_id
WHERE module.code::text = ANY (ARRAY['PRE2015_MIM'::character varying::text, 'POST2015_MIM'::character varying::text, 'REF2020_MIM'::character varying::text, 'MIM_MANAGEMENT_COURSES'::text, 'POST2020_MIM'::character varying::text])) pp ON pp.apprenant_id = apprenant.objet_id
JOIN t_arborescences_scolarite ligne_intermediaire_programme ON ligne_intermediaire_programme.module_id = mim_elc.objet_id AND ligne_intermediaire_programme.arborescence_programme_id = 2401812
JOIN t_arborescences_scolarite ligne_intermediaire_programme__2 ON ligne_intermediaire_programme__2.objet_id = ligne_intermediaire_programme.ligne_parente_id AND ligne_intermediaire_programme__2.module_id = pp.pre_post_id
LEFT JOIN cours ON cours.apprenant_id = apprenant.objet_id AND cours.ligne_parente_id = ligne_intermediaire_programme.objet_id
LEFT JOIN modules_hors_mgt ON modules_hors_mgt.apprenant_id = apprenant.objet_id
LEFT JOIN module_mim_management ON module_mim_management."id.Apprenant" = apprenant.objet_id
), validite AS (
SELECT credits."PRE_POST",
credits.apprenant_id,
credits.numelv,
credits.ind_nom,
credits.mode_admission_code,
credits.inscr_mim_elc_id,
-- credits.credits_potentiels,
credits.credits_obtenus,
CASE
WHEN credits.mode_admission_code::text = 'VISITANT'::text AND credits.credits_obtenus > 0::numeric THEN true
-- ELSE COALESCE(credits.credits_obtenus, 0::numeric) >= COALESCE(credits.credits_potentiels, 0::numeric)
END AS valide,
credits.creditpot_inscour,
credits.creditpotspe_inscour,
credits."créditpotspe_inscmod",
credits."créditpot_inscmod",
credits."CréditsModule"
FROM credits
)
SELECT validite."PRE_POST",
validite.apprenant_id,
validite.numelv,
validite.ind_nom,
validite.mode_admission_code,
validite.inscr_mim_elc_id,
-- validite.credits_potentiels,
validite.credits_obtenus,
validite.valide,
validite.creditpot_inscour,
validite.creditpotspe_inscour,
validite."créditpotspe_inscmod",
validite."créditpot_inscmod",
validite."CréditsModule",
CASE
WHEN validite.valide THEN 'true'::text
ELSE 'false'::text
END AS validation,
CASE
WHEN validite.valide THEN '10'::text
ELSE '0'::text
END AS note_numerique,
CASE
WHEN validite.valide THEN 'V'::text
ELSE 'NV'::text
END AS note_alpha,
case
WHEN validite."PRE_POST"::text = 'MIM_MANAGEMENT_COURSES'::text then
case
when validite."créditpotspe_inscmod" is not null THEN validite."créditpotspe_inscmod"
WHEN validite."créditpotspe_inscmod" is null then validite.creditpot_inscour
when validite.creditpotspe_inscour is null then validite.creditpot_inscour
when validite.creditpot_inscour is null then validite."créditpot_inscmod"
when validite."créditpot_inscmod" is null then validite."CréditsModule"
end
END AS creditpot_final
FROM validite
WHERE validite.numelv::text = '203670'::text;
Merci bien
Hors ligne
Bonjour,
Ma requette sort plusieur colonne:
"créditpotspe_inscmod"=0
creditpot_inscour =0
creditpot_inscour= 24
"créditpot_inscmod" =0
"CréditsModule" =0Je voudrais valorisé dans une colonne finale (ici creditpot_final) avec une condition Case When la valeur de l'un des champs précédent selon qu'ils soient nulle ou pas.
Test du bbcode FluxBB
ici il devrait afficher 24 dans creditpot_final.
Quelqu'un pourrais m'aider
Voici la condition que j'ai faites:
WHEN validite."PRE_POST"::text = 'MIM_MANAGEMENT_COURSES'::text then
case
when validite."créditpotspe_inscmod" is not null THEN validite."créditpotspe_inscmod"
WHEN validite."créditpotspe_inscmod" is null then validite.creditpot_inscour
when validite.creditpotspe_inscour is null then validite.creditpot_inscour
when validite.creditpot_inscour is null then validite."créditpot_inscmod"
when validite."créditpot_inscmod" is null then validite."CréditsModule"
end
END AS creditpot_finalMais cela ne marche pas. dans creditpot_final j'ai 0
Je ne suis pas sûr de comprendre votre problème. Si "créditpotspe_inscmod" vaut 0 alors par définition la colonne n'est pas nulle, et votre expression retourne donc cette valeur.
Julien.
https://rjuju.github.io/
Hors ligne
Bonjour Exactement merci j'ai modifié le code afin de ne plus retourner 0
Hors ligne