WITH total AS
(
SELECT rang,
nom_complet,
CASE
WHEN cd_nom = cd_ref THEN Concat (lb_nom,' ','(nom valide)')
ELSE Concat( lb_nom,' ', ' (syn. de ',nom_valide,')','')
END AS lb_nom_key,
cd_nom AS cd_nom_key,
Concat_ws('!',lb_nom,cd_nom) AS lb_cd_nom_key,
regne,
group2_inpn AS groupe,
group1_inpn,
fr,
lower(
CASE
WHEN (
lb_nom ilike '% f. %'
OR lb_nom ilike '%(%'
OR lb_nom ilike '% x %'
OR lb_nom ilike '%var.%') THEN NULL::text
ELSE trim(concat(LEFT(split_part(lb_nom,' ',1),3),' ',LEFT(split_part(lb_nom,' ',2),3),' ',LEFT(split_part(lb_nom,' ',3),3)))
END) AS code_espece_key
FROM inpn.taxref_v12
UNION
SELECT rang,
nom_complet,
CASE
WHEN nom_vern IN
(
SELECT nom_vern
FROM inpn.taxref_v12
WHERE rang = 'ES'
GROUP BY nom_vern
HAVING count (DISTINCT cd_ref) > 1) THEN concat(nom_vern,' ','(',lb_nom,')')
ELSE concat(nom_vern,' -> ',lb_nom,' ','(nom valide)')
END AS lb_nom_key,
cd_nom AS cd_nom_key,
concat_ws('!',lb_nom,cd_nom) AS lb_cd_nom_key,
regne,
group2_inpn AS groupe,
group1_inpn,
fr,
lower(
CASE
WHEN (
lb_nom ilike '% f. %'
OR lb_nom ilike '%(%'
OR lb_nom ilike '% x %'
OR lb_nom ilike '%var.%') THEN NULL::text
ELSE trim(concat(LEFT(split_part(lb_nom,' ',1),3),' ',LEFT(split_part(lb_nom,' ',2),3),' ',LEFT(split_part(lb_nom,' ',3),3)))
END) AS code_espece_key
FROM inpn.taxref_v12
WHERE cd_nom = cd_ref
AND nom_vern IS NOT NULL
AND rang = 'ES' )
SELECT lb_nom_key,
cd_nom_key,
lb_cd_nom_key,
regne AS regne_key,
groupe,
group1_inpn,
code_espece_key ,
rank() OVER(ORDER BY
CASE
WHEN rang ='GN' THEN 1
ELSE 2
END,
CASE
WHEN lb_nom_key ilike '%nom valide%' THEN 3
ELSE 4
END, lb_nom_key ) AS sortby
FROM total
WHERE regne IN ('Animalia')
AND (
fr = 'P'
OR fr ='E'
OR fr ='S'
OR fr ='C')
AND (
groupe NOT IN ('Diatomées' ,
'Scléractiniaires' ,
'Pycnogonides' ,
'Octocoralliaires' ,
'Ochrophyta' ,
'Rhodophytes' ,
'Némertes' ,
'Nématodes',
'Hydrozoaires' ,
'Ascidies' ,
'Annélides',
'Acanthocéphales')
OR groupe IS NULL )
AND (
group1_inpn NOT IN ('Bryozoaires',
'Cnidaires',
'Cryptophytes',
'Cténaires',
'Cyanobactéries',
'Echinodermes',
'Foraminifères',
'Gastrotriches',
'Onychophores',
'Porifères',
'Rotifères',
'Siponcles',
'Tardigrades',
'Vers',
'Protéobactéries')
OR group1_inpn IS NULL)
ORDER BY sortby