Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/04/2011, 10h05   #1
Membre du Club
 
Inscription : juillet 2002
Messages : 154
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 154
Points : 40
Points : 40
Envoyer un message via MSN à foxrol
Par défaut [SQL SERVEUR 2005] Requête

Bonjour j'ai la requête ci-dessous dans laquelle je voudrais pour chaque groupe matnr, mandt, mmsta, werks utilisé le min(ID) pour trier mes données, et c'est a ce niveau que le problème se pose car j'obtient le message d'erreur
ci-dessous comme s'il ne voulait pas que je fasse un aggrégat sur un champ calculé.
Code sql :
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
 
 
 
USE ods
SELECT 
	 matnr, 
	 mandt, 
	 mmsta,
	 werks,
 (case  werks
	 	 when 9101  then 1
         when 9103  then 2
         when 9111  then 3
         when 2601  then 4
         when 9102  then 5
         when 3001  then 6
         when 2001  then 7
         when 2301  then 8
         when 9011  then 9
 
      end ) AS ID
FROM c_sap_marc
 
WHERE mmsta <>''
 
GROUP BY 
	 matnr, 
	 mandt, 
	 mmsta,
	 werks

Code :
1
2
3
 
Msg 207, Level 16, State 1, Line 19
Invalid COLUMN name 'ID'.

Merci pour votre aide.
foxrol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 10h56   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
bonjour,



Est-ce la requête que vous avez postée qui génère cette erreur, ou est-ce quand vous essayez de la modifier ?

Je ne vois pas de MIN dans cette requête, et à première vue, elle me parait correcte !
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 11h00   #3
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 668
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 668
Points : 8 718
Points : 8 718
Bonjour,

C'est effectivement le cas.

On peut réécrire la requête comme suit :

Code :
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
;WITH
	CTE AS
	(
		SELECT	matnr
			, mandt
			, mmsta
			, werks
			, CASE  werks
	 			WHEN 9101 THEN 1
				WHEN 9103  THEN 2
				WHEN 9111  THEN 3
				WHEN 2601  THEN 4
				WHEN 9102  THEN 5
				WHEN 3001  THEN 6
				WHEN 2001  THEN 7
				WHEN 2301  THEN 8
				WHEN 9011  THEN 9
			END AS ID
		FROM	dbo.c_sap_marc
		WHERE	mmsta <>''
	)
SELECT	matnr
	, mandt
	, mmsta
	, werks
	, MIN(ID) AS min_ID
FROM	CTE
GROUP	BY matnr, mandt, mmsta, werks
Ou si vous préférez :

Code :
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
SELECT	matnr
	, mandt
	, mmsta
	, werks
	, MIN(ID) AS min_ID
FROM	(
		SELECT	matnr
			, mandt
			, mmsta
			, werks
			, CASE  werks
	 			WHEN 9101 THEN 1
				WHEN 9103  THEN 2
				WHEN 9111  THEN 3
				WHEN 2601  THEN 4
				WHEN 9102  THEN 5
				WHEN 3001  THEN 6
				WHEN 2001  THEN 7
				WHEN 2301  THEN 8
				WHEN 9011  THEN 9
			END AS ID
		FROM	dbo.c_sap_marc
		WHERE	mmsta <>''
	) AS T
GROUP	BY matnr, mandt, mmsta, werks
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 11h04   #4
Membre du Club
 
Inscription : juillet 2002
Messages : 154
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 154
Points : 40
Points : 40
Envoyer un message via MSN à foxrol
Merci à tous pour votre aide.
foxrol est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h12.


 
 
 
 
Partenaires

Hébergement Web