Bonjour,

Je rencontre un petit soucis dans la rédaction d'une requête et le regroupement de ses doublons.

Je génére la requete suivante :
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
38
39
40
41
42
43
44
45
46
 
WITH R as (
SELECT distinct	f.NUM_ENR
				,f.DESIGN
				,(sum(lbt.QTE*s.pump) over (partition by f.design)) cumul2
 
 
 
from	T_FAMILLE_PIECE f
	full join	t_piece p		on p.CLE_FAMILLE = f.NUM_ENR
	full join	T_LIGNE_BT lbt	on lbt.CLE_ELEMENT = p.CLE_PIECE
	left join	T_STOCK	s		on s.CLE_PIECE = p.CLE_PIECE
	left join t_bt bt			on bt.NUM_BT =lbt.CLE_BT
where lbt.TYPE_LIGNE_BT ='P'
	and s.CLE_MAGASIN <>100000
	and bt.DATE_DEB_REEL between  dateadd( MONTH ,-3,dateadd(day,0,DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101')))
							and		dateadd(day,0,DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101'))
 
union 
 
SELECT distinct	f.NUM_ENR
				,f.DESIGN
				,(sum(lbt.COUT_2_PSEUDO_U) over (partition by f.design)) cumul2
 
from	T_FAMILLE_PIECE f
	full join	t_piece p		on p.CLE_FAMILLE = f.NUM_ENR
	inner join T_MATRICULE_PIECE m on m.CLE_PIECE = p.CLE_PIECE
	full join	T_LIGNE_BT lbt	on lbt.CLE_ELEMENT = m.NUM_PIECE_M
	left join	T_STOCK	s		on s.CLE_PIECE = p.CLE_PIECE
	left join t_bt bt			on bt.NUM_BT =lbt.CLE_BT
where lbt.TYPE_LIGNE_BT ='M'
	and s.CLE_MAGASIN <>100000
	and bt.DATE_DEB_REEL between  dateadd( MONTH ,-3,dateadd(day,0,DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101')))
							and		dateadd(day,0,DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101'))
 
 
	)
 
SELECT	NUM_ENR
		,DESIGN
		,cumul2/*
		,SUM(CUMUL) OVER (order by CUMUL desc) as TOTCUMUL */
		,cumul2 / SUM(CUMUL2) OVER () as 'pourcentage/tot'
		,SUM(CUMUL2) OVER (order by CUMUL2 desc)  / SUM(CUMUL2) OVER () as TOTCUMUL2
 
FROM R
J'ai bien tenté de faire un group by :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
SELECT	NUM_ENR
		,DESIGN
		,SUM(cumul2)
		,SUM(cumul2 / SUM(CUMUL2) OVER () ) as 'pourcentage/tot'
		,SUM ( SUM(CUMUL2) OVER (order by CUMUL2 desc)  / SUM(CUMUL2) OVER () ) as TOTCUMUL2

FROM R
GROUP BY NUM_ENR
		,DESIGN
mais l'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Msg*8120, Niveau*16, État*1, Ligne*44
La colonne 'R.cumul2' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
Msg*4109, Niveau*15, État*1, Ligne*44
Les fonctions fenêtrées ne peuvent pas être employées dans le contexte d'une autre fonction en fenêtre ou d'un agrégat.
Auriez vous une solution.. ?

Cordialement,