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

Développement SQL Server Discussion :

Erreur 1008 variable dans order by : Transact SQL


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2011
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 255
    Par défaut Erreur 1008 variable dans order by : Transact SQL
    Bonjour à tous,

    J'ai créer un procédure stocké qui doit pour chaque ligne me retourné une moyenne et je souhaiterai classé les résultat par moyenne :

    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
     
    ALTER PROCEDURE PS_MoyNoteParArtisan (@p_idAritsan int)
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
     
        DECLARE @nbLigne int;
        DECLARE @sum int;
        DECLARE @moy int;
     
    	SELECT @nbLigne = (SELECT Count(*) FROM noter WHERE idArtisan = @p_idAritsan);
    	SELECT @sum = (SELECT SUM(noteGeneral)FROM noter WHERE idArtisan = @p_idAritsan);
    	SET @moy = @sum / @nbLigne;
     
    	SELECT *,@moy from artisan where id = @p_idAritsan
    	order by @moy
     
    END
    GO
    A l'éxécution de la procédure j'ai cette erreur :

    Msg*1008, Niveau*16, État*1, Procédure*PS_MoyNoteParArtisan, Ligne*22
    L'élément SELECT identifié par le numéro ORDER BY 1 contient une variable faisant partie de l'expression identifiant une position de colonne. Les variables ne sont autorisées dans ORDER BY que si l'ordre est une expression référençant un nom de colonne.
    Comment donc déclarer une variable calculer dans un order by ? enfin si cela est possible.

    Merci a vous.

  2. #2
    Membre actif
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : R&D

    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Par défaut
    Bonjour,

    Essaie utiliser une seule requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ALTER PROCEDURE PS_MoyNoteParArtisan (@p_idAritsan int)
    AS
    BEGIN
      SET NOCOUNT ON;
      SELECT a1.*, a2.avgNoteGeneral
      FROM artisan a1
        CROSS JOIN (
          SELECT AVG(noteGeneral) AS avgNoteGeneral
          FROM artisan 
          WHERE id = @p_idAritsan
        ) a2
      WHERE id = @p_idAritsan
      ORDER BY a2.avgNoteGeneral;
    END

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2011
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 255
    Par défaut
    Merci Serguei_TARASSOV, ça marche parfaitement.


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

Discussions similaires

  1. erreur SP2-0552 dans un bloc pl/sql
    Par lucaazori1988 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 01/05/2010, 18h42
  2. Réponses: 2
    Dernier message: 01/07/2009, 10h33
  3. Réponses: 2
    Dernier message: 13/08/2007, 21h15
  4. Utilisation d'une variable dans un bloc pl/sql
    Par paris2000fr dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/03/2006, 14h08
  5. Réponses: 2
    Dernier message: 16/01/2006, 15h07

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