Я хотел бы знать, как разыгрывать дубликаты во ВНУТРЕННЕМ СОЕДИНЕНИИ.
Кстати, у меня есть запрос, который возвращает мне 23 миллиона строк этой формы:
field1 field2 field3 field4 field5
a k c u j
o y c t m
r k z u d
a k c x w
d y q t h
Я хочу удалить строки, в которых field2 и field4 имеют одинаковое значение, и сохранить в качестве первой строки этих дубликатов.
Результат, который я ожидал, был:
field1 field2 field3 field4 field5
a k c u j
o y c t m
a k c x w
Ниже моего кода, к которому я хочу применить это лечение. Мне нужна помощь и предложения в нижней части моего кода. Спасибо
SELECT
cd_box,
cd_charact,
txt_charact_value,
row_id,
val_charact_value,
dttm_charact_value,
cd_param,
val_charact
FROM (
SELECT
code_element AS cd_box,
code_caracteristique,
valeur_t AS txt_charact_value,
null as row_id,
valeur_n AS val_charact_value,
valeur_d AS dttm_charact_value,
index_tableau AS val_charact,
valeur_liste,
code_type_element,
cd_charact,
cd_param,
code_caracteristique_metro
FROM (
SELECT
code_element,
code_caracteristique,
valeur_texte,
valeur_num,
valeur_date,
index_tableau,
valeur_liste,
code_type_element,
idtype_valeur,
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'
--ELSE 'null'
END AS valeur_t,
CASE
WHEN (idtype_valeur=9 OR idtype_valeur=10 OR idtype_valeur=11) THEN TO_CHAR(valeur_num)
--ELSE 'null'
END AS valeur_n,
CASE
WHEN (idtype_valeur=3 OR idtype_valeur=5) THEN TO_CHAR(valeur_date)
--ELSE 'null'
END AS valeur_d
FROM (
SELECT
code_element,
code_caracteristique,
valeur_texte,
valeur_num,
valeur_date,
index_tableau,
valeur_liste,
code_type_element,
idtype_valeur
FROM (
SELECT
ec.code_element,
ec.code_caracteristique,
ec.valeur_texte,
ec.valeur_num,
ec.valeur_date,
ec.index_tableau,
ec.valeur_liste,
e.code_type_element
FROM
stg_element_caracteristique ec,
stg_element e,
stg_caracteristique c,
stg_modele_caracteristique mc
WHERE e.code=ec.code_element AND c.name = ec.code_caracteristique
AND c.idmodele_caracteristique = mc.id
AND mc.idtype_valeur != 6
AND (ec.valeur_liste='null' OR ec.valeur_liste is null)
AND ec.code_caracteristique!='TE_GENER_DATE_MES'
) table1
INNER JOIN (
SELECT
stg_caracteristique.name,
stg_type_element.code,
stg_modele_caracteristique.idtype_valeur
FROM
stg_caracteristique,
stg_type_element,
stg_modele_caracteristique
WHERE
stg_caracteristique.idtype_element = stg_type_element.id
AND stg_modele_caracteristique.id = stg_caracteristique.idmodele_caracteristique
AND stg_type_element.code != 'TE_GENER'
ORDER BY stg_type_element.code
) table2
ON (table1.code_caracteristique = table2.name AND table1.code_type_element = table2.code)
)
) charact1
INNER JOIN ( --le dernier lk
SELECT
cd_code as cd_charact,
code_param as cd_param,
code_caracteristique_metro
FROM
stg_reprisemaskeqrevu
) row1
ON (charact1.code_caracteristique = row1.code_caracteristique_metro)
) WHERE cd_box IS NOT NULL OR cd_box!='null'