IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[SQL SERVEUR 2005] Requête


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 221
    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 : 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
     
     
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Msg 207, Level 16, State 1, Line 19
    Invalid column name 'ID'.

    Merci pour votre aide.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    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 !

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    C'est effectivement le cas.

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

    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
    ;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 : 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
    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
    @++

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 221
    Par défaut
    Merci à tous pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL Serveur 2005] Requête sur un champ de type XML
    Par Cyrilange dans le forum Développement
    Réponses: 3
    Dernier message: 23/06/2008, 07h15
  2. Verrou SQL Serveur 2005 (ADO sous Delphi)
    Par Régent dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/04/2006, 09h37
  3. JDBC pour sql serveur 2005 express
    Par squal_13 dans le forum JDBC
    Réponses: 2
    Dernier message: 31/03/2006, 16h23
  4. Importer un fichier XML avec SQL serveur 2005
    Par thomasesteve dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/03/2006, 11h26
  5. Problème avec l'import DTS SQL Serveur 2005
    Par dlan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/03/2006, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo