Bonjour,

J'essaie de créer une vue des effectifs scolaires en ordonnant le niveau dans l'ordre de progression de manière à pouvoir réexploiter facilement les données dans un crosstab qui fonctionne bien

J'ai donc deux vues mais pour la première requête j'obtiens l'erreur suivante

ERREUR: la sous-requête du FROM doit avoir un alias
LINE 4: FROM (SELECT
^
HINT: Par exemple, FROM (SELECT...) [AS] quelquechose.
Et donc voici les requêtes

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
CREATE OR REPLACE VIEW secto_elem_global_result (nom_sect, niveau, effectifs)
AS
(SELECT c.nom_sect, t.niveau, t.effectifs
FROM (SELECT 
"SIMULATION_SECTEURS_ECOLES_ELEMENTAIRES".id AS nom_sect,
CASE
	WHEN "BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932".inscr_2016 = 'CP' THEN 'niveau_1_CP'
	WHEN "BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932".inscr_2016 = 'CE1' THEN 'niveau_2_CE1'
	WHEN "BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932".inscr_2016 = 'CE2' THEN 'niveau_3_CE2'
	WHEN "BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932".inscr_2016 = 'CM1' THEN 'niveau_4_CM1'
	WHEN "BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932".inscr_2016 = 'CM2' THEN 'niveau_5_CM2'
	ELSE 'non_elem'
end AS niveau,
count(*) AS effectifs
FROM postgres.postgres."BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932" t
INNER JOIN postgres.postgres."SIMULATION_SECTEURS_ECOLES_ELEMENTAIRES" c
ON ST_WITHIN(c.geometry, t.geometry2))
GROUP BY c.nom_sect, t.niveau
ORDER BY c.nom_sect, t.niveau);
 
 
 
 
CREATE OR REPLACE VIEW secto_elem_global_tableau
AS SELECT *
FROM crosstab(
'select nom_sect, niveau, effectifs
from secto_elem_global_result
where niveau = ''niveau_1_CP'' OR niveau = ''niveau_2_CE1'' OR niveau = ''niveau_3_CE2'' OR niveau = ''niveau_4_CM1'' OR niveau = ''niveau_5_CM2''
ORDER BY 1,2')
AS 
(id character varying (25),
niveau_1_CP bigint, 
niveau_2_CE1 bigint, 
niveau_3_CE2 bigint, 
niveau_4_CM1 bigint, 
niveau_5_CM2 bigint);
Avez-vous une idée de la manière à utiliser pour résoudre ce problème ?