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 :

[SQL2005] Raccourci pour expressions similaires


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 190
    Par défaut [SQL2005] Raccourci pour expressions similaires
    Est-il possible d'utiliser directement un résultat que l'on vient de calculer pour une autre expression ?
    Voici un exemple plus explicite de ma question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  C1 + C2 AS [addition_1],
    	[addition1] + C3 AS [addition_2]
     
    FROM	my_table


    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  C1 + C2 AS [addition_1],
    	C1 + C2 + C3 AS [addition_2]
     
    FROM	my_table



    Le but serait d'utiliser une fonction raccourci qui permettrait d'éviter de réecrire l'expression entière.

    Merci pour votre aide.

  2. #2
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Directement dans le select, non? Mais vous pouvez utiliser une CTE (à partir de SQL 2005) pour pré-calculer votre premier résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with t (somme) AS (
    	select 
    	 1 + 1 as somme
     )
    select 
    	somme
    	,somme + 1
    from t

  3. #3
    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

    "directement", non.

    par contre vous pouvez faire ceci :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT addition1, addition1 + C3 AS addition2
    FROM
    (
      SELECT C1 + C2  AS addition1, C3
      FROM MaTable
    ) AS tmp

    Mais je ne vois pas l'intérêt

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 190
    Par défaut
    Bonsoir,

    n'y a t'il aucun moyen de faire ceci sans modifier la clause FROM ?
    Car dans ma query initiale, j'ai déjà plusieurs join qui s'y affère. Dès lors, je commence à m'emmeler.

    L'intêret est d'allléger/améliorer la visibilité de ma query.
    Je vous ai donné ici un exemple simple, mais ma query est bien plus complexe.

  5. #5
    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
    Puisque vous semblez être en 2005, et si votre but est d'améliorer la lisibilité de votre requete, alors la solution de Jinroh77 est surement ce qu'il vous faut !

    En gros dans votre cas cela revient a définir avant la requete elle même des résultats intermédiaires. Vous vous y retrouverez donc facilement dans la requete par la suite.

    En fonction de vos besoins, une vue pourrait aussi être une solution adaptée


    Enfin, mais cela n'engage que moi, dans votre question initiale, je trouve que votre deuxième requete, bien indentée, est bien plus lisible que la première !
    En effet, on voit très vite que la deuxième ligne du SELECT reprend la première...

    Effectivement, si votre requete est vraiment très compliquée, avec de nombreux calculs imbriqués, alors passez soit par une CTE, soit par une vue(qui en plus pourra peut être être indexée par la suite pour améliorer les performances de votre requete)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 190
    Par défaut
    Merci pour vos suggestions.
    Dès lors, pourrai-je vous demander comment vous simplifieriez ce code ci-dessous svp ?!

    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
    SELECT
     
    CASE WHEN condition1 THEN 0
         ELSE
    	     CASE WHEN condition2 THEN 0
                      WHEN condition3 THEN 1					
                      WHEN condition4 THEN 1
    		  ELSE 0
    	     END
    END AS [C1],
     
     
    CASE WHEN condition1 THEN 0	
         ELSE
    	     CASE WHEN condition 5 THEN 0
    		  ELSE 
    	              CASE WHEN condition2 THEN 0
                               WHEN condition3 THEN 1
                               WHEN condition4 THEN 1
                               ELSE 0
    		      END
    	     END
    END AS [C2],
     
    et ainsi de suite..
     
    FROM my_table
    Merci d'avance.

  7. #7
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    La valeur de C2 utilise dans son CASE WHEN la valeur de C1 ?

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

Discussions similaires

  1. Raccourci pour nom avec formattage
    Par jackrabbit dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 29/09/2006, 23h31
  2. question sur le raccourci pour la sécurité
    Par yoyoo dans le forum Sécurité
    Réponses: 6
    Dernier message: 08/08/2006, 11h58
  3. aide pour expression réguliere
    Par guiillaume63 dans le forum Langage
    Réponses: 11
    Dernier message: 23/06/2006, 22h15
  4. [Raccourci] Creer un raccourci pour System.out.println()
    Par VlaMonPseudo dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/04/2006, 15h48
  5. Synthaxe pour expression comprenant quote avec commande like
    Par loopy4321 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/07/2004, 13h21

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