J'ai cette requête SQL qui me renvoie 23 millions de lignes.
SELECT
code_element AS cd_box,
cd_code AS cd_charact,
CASE
WHEN (idtype_valeur=1 OR idtype_valeur=2) AND (valeur_texte!='null' AND valeur_texte='t') THEN 'OUI'
WHEN (idtype_valeur=1 OR idtype_valeur=2) AND (valeur_texte!='null' AND valeur_texte='f') THEN 'NON'
END AS txt_charact_value,
null as row_id,
CASE
WHEN (idtype_valeur=9 OR idtype_valeur=10 OR idtype_valeur=11) THEN TO_CHAR(valeur_num)
END AS val_charact_value,
CASE
WHEN (idtype_valeur=3 OR idtype_valeur=5) THEN TO_CHAR(valeur_date)
END AS dttm_charact_value,
code_param AS cd_param,
index_tableau AS val_charact
FROM (
SELECT
*
FROM
stg_tempo1
INNER JOIN stg_tempo2
ON (stg_tempo1.code_caracteristique = stg_tempo2.name AND stg_tempo1.code_type_element = stg_tempo2.code)
) charact1
INNER JOIN stg_reprisemaskeqrevu
ON (charact1.code_caracteristique = stg_reprisemaskeqrevu.code_caracteristique_metro)
Mon objectif est de ne pas prendre les lignes où les champs cd_box, cd_charact, cd_paramet val_charactsont les mêmes et garder que la première ligne rencontrer dans l'enregistrement. Je m'explique :
Supposant que cette requête me renvoie l'enregistrement ci-dessous :
Je veux supprimer les lignes où field2 et field4 ont la même valeur et garder que la première ligne de ces doublons. Le résultat que j'attendais était ceci :
J'ai vraiment besoin d'aide. J'ai pensé à jouer sur les MIN(rowid) mais le résultat de ma requête n'est pas encore stocké en base. il faut que je supprime d'abord ces doublons (avec les contraintes expliquées). J'ai aussi essayé avec
row_number() over (partition by cd_box, cd_charact, cd_param, val_charact order by cd_box)
mais j'ai un problème de tablespace...
Un jour sans Internet, c'est comme une année sans pluie.
Peux-tu nous dire dans quelle table se trouve les colonnes code_element, cd_code, code_param et index_tableau ?
Au passage je ne comprends pas l'intérêt de la sous-requête du FROM si tu ne fais aucun filtre ou agrégat ...
Tu pourrais juste écrire :
SELECT ...
FROM
stg_tempo1 T1
INNER JOIN stg_tempo2 T2
ON T1.code_caracteristique = T2.name
AND T1.code_type_element = T2.code
INNER JOIN stg_reprisemaskeqrevu R
ON T1.code_caracteristique = R.code_caracteristique_metro
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.