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

Langage SQL Discussion :

Alias et colonnes calculées


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut Alias et colonnes calculées
    Bonsoir.

    Existe-t-il un moyen d'utiliser les aliases (ou autre technique) dans des colonnes calculées, comme dans le SQL d'Access ? Je suis en train de créer une requête de facturation et la longueur des lignes vire au cauchemar.

    Merci.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Bien sûr, il suffit de mettre l'alias après le "calcul" de la colonne dans la clause SELECT, comme pour n'importe quelle autre colonne.

    Tatayo.

  3. #3
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut
    Sans alias, fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT ACH_ID,
    ACH_PUHT,
    ACH_QTE,
    ACH_RAB_T,
    ACH_PUHT * (1 - ACH_RAB_T) AS ACH_PUNHT,
    ACH_PUHT * (1 - ACH_RAB_T) * ACH_QTE AS ACH_TNHT
    FROM T_ACHATS_SUB;
    Avec alias, ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT ACH_ID,
    ACH_PUHT,
    ACH_QTE,
    ACH_RAB_T,
    ACH_PUHT * (1 - ACH_RAB_T) AS ACH_PUNHT,
    ACH_PUNHT * ACH_QTE AS ACH_TNHT
    FROM T_ACHATS_SUB;
    Je ne sais pas ce qu'il faut modifier.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    J'avais compris que tu voulais affecter un alias à une colonne calculée, et non utiliser cet alias dans le calcul d'une autre colonne.
    A ma connaissance ce n'est pas possible.
    Un expert pourra confirmer (ou me corriger), mais l'alias est "affecté" en dernier, et n'est pas connu quand le moteur génère la liste des colonnes.

    Il existe peut-être une technique avec le SGBD utilisé, mais comme tu ne l'as pas précisé, impossible de répondre.

    Tatayo.

  5. #5
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut
    Ça fait partie des mauvaises habitudes prises avec Access depuis des années.

    Citation Envoyé par tatayo Voir le message
    Il existe peut-être une technique avec le SGBD utilisé, mais comme tu ne l'as pas précisé, impossible de répondre.
    Pour le SGBDR, j'utilise HSQL (LO Base) et MySql.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Pour LO je n'en sais rien, mais pour MySQL c'est du standard :

    select (Col1-Col2) * Col3 as mon_calcul

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Ce n'est pas tout à fait sa demande.
    Il veut faire un truc du genre:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select col1 + col2 as tot1,
    tot1 + col3+ as tot2
    from LaTable
    Donc utiliser l'alias d'une colonne calculée dans le calcul d'une autre colonne, dans mon exemple l'alias du premier calcul (tot1) dans le deuxième calcul (tot2).

    Tatayo.

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    en ce cas il faut faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select (Col1-Col2) * Col3 as truc
         , (select truc + Col1) as bidule
    from Latable

  9. #9
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut
    Ça fonctionne parfaitement dans MySql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT
    ACH_ID,
    ACH_QTE,
    ACH_PUHT,
    ACH_RAB_T,
    ACH_TVA_T,
    ACH_PUHT * (1 - ACH_RAB_T) AS ACH_PUNT,
    (SELECT ACH_PUNT * ACH_QTE) AS ACH_TNHT,
    (SELECT ACH_TNHT * ACH_TVA_T) AS ACH_TVA,
    (SELECT ACH_TNHT + ACH_TVA) AS ACH_TTC
    FROM T_ACHATS
    Mais erreur de syntaxe dans LO Base. Je vais regarder dans la documentation, ça fonctionne peut-être avec une syntaxe différente.

    Merci.

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    essayez peut-être sans le mot "AS" des fois ça passe sans (même si je trouve que c'est plus explicite avec)

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il y a peu de SGBDR qui supportent la réutilisation des alias au sein du même niveau de requête, je ne sais pas pourquoi mais ce n'est pas prévu par la norme SQL il me semble.
    C'est vrai que quand on y a goûté c'est toujours un peu pénible de s'en passer, SQL étant déjà assez verbeux comme ça pas la peine d'en rajouter.

    En attendant la solution normative serait celle-ci :
    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
    select ACH_ID
         , ACH_QTE
         , ACH_PUHT
         , ACH_RAB_T
         , ACH_TVA_T
         , ACH_PUNT
         , ACH_TNHT
         , ACH_TVA
         , ACH_TNHT + ACH_TVA as ACH_TTC
      from (select ACH_ID
                 , ACH_QTE
                 , ACH_PUHT
                 , ACH_RAB_T
                 , ACH_TVA_T
                 , ACH_PUNT
                 , ACH_TNHT
                 , ACH_TNHT * ACH_TVA_T as ACH_TVA
              from (select ACH_ID
                         , ACH_QTE
                         , ACH_PUHT
                         , ACH_RAB_T
                         , ACH_TVA_T
                         , ACH_PUNT
                         , ACH_PUNT * ACH_QTE AS ACH_TNHT
                      from (select ACH_ID
                                 , ACH_QTE
                                 , ACH_PUHT
                                 , ACH_RAB_T
                                 , ACH_TVA_T
                                 , ACH_PUHT * (1 - ACH_RAB_T) AS ACH_PUNT
                              from T_ACHATS
                           ) t1
                   ) t2
           ) t3;
    Ou encore, si votre SGBD supporte les expressions de table communes :
    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
    with cte_PUNT as
    (
    select ACH_ID
         , ACH_QTE
         , ACH_PUHT
         , ACH_RAB_T
         , ACH_TVA_T
         , ACH_PUHT * (1 - ACH_RAB_T) AS ACH_PUNT
      from T_ACHATS
    )
      ,  cte_TNHT as
    (
    select ACH_ID
         , ACH_QTE
         , ACH_PUHT
         , ACH_RAB_T
         , ACH_TVA_T
         , ACH_PUNT
         , ACH_PUNT * ACH_QTE AS ACH_TNHT
      from cte_PUNT
    )
      ,  cte_TVA as
    (
    select ACH_ID
         , ACH_QTE
         , ACH_PUHT
         , ACH_RAB_T
         , ACH_TVA_T
         , ACH_PUNT
         , ACH_TNHT
         , ACH_TNHT * ACH_TVA_T as ACH_TVA
      from cte_TNHT
    )
    select ACH_ID
         , ACH_QTE
         , ACH_PUHT
         , ACH_RAB_T
         , ACH_TVA_T
         , ACH_PUNT
         , ACH_TNHT
         , ACH_TVA
         , ACH_TNHT + ACH_TVA as ACH_TTC
      from cte_TVA;
    La "bonne nouvelle" c'est que l'optimiseur fera toutes les transformations pour vous en une seule fois, mais je reconnais volontiers que c'est pénible à écrire.

  12. #12
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut
    @Waldar, le premier script fonctionne, le second retourne une erreur de syntaxe. Par contre, vu qu'il faut commencer par la fin va falloir prendre le coup pour les écrire. Et j'ai intérêt à garder les requêtes dans un fichier texte bien indenté car le SQL de LO Base place tout sur une seule ligne une fois la requête enregistrée.

    Merci.

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    @Nerva : avez vous essayé ma réponse n° 10 (supprimer simplement le "AS") ?

  14. #14
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Citation Envoyé par Nerva Voir le message
    le second retourne une erreur de syntaxe.
    Comme indiqué ça fonctionne uniquement si votre SGBD supporte les expressions de table communes (CTE en anglais).

    Citation Envoyé par Nerva Voir le message
    Par contre, vu qu'il faut commencer par la fin va falloir prendre le coup pour les écrire.
    Justement ça se lit de haut en bas sans avoir à détricoter trop d'imbrication, et vous pouvez réutiliser plusieurs fois une CTE déclarée.
    Si vous commencez par le bas c'est que vous faites du reverse engeneering, et du coup c'est assez normal comme comportement.

    Citation Envoyé par Nerva Voir le message
    Et j'ai intérêt à garder les requêtes dans un fichier texte bien indenté car le SQL de LO Base place tout sur une seule ligne une fois la requête enregistrée.

  15. #15
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Nerva Voir le message
    @Waldar, le premier script fonctionne, le second retourne une erreur de syntaxe. Par contre, vu qu'il faut commencer par la fin va falloir prendre le coup pour les écrire. Et j'ai intérêt à garder les requêtes dans un fichier texte bien indenté car le SQL de LO Base place tout sur une seule ligne une fois la requête enregistrée.
    Pas très grave il y a des dizaine d'indenteurs en ligne :
    https://sqlformat.org/
    https://sql-format.com
    http://dpriver.com/pp/sqlformat.htm
    https://codebeautify.org/sqlformatter
    https://www.freeformatter.com/
    ...
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  16. #16
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    @Nerva : avez vous essayé ma réponse n° 10 (supprimer simplement le "AS") ?
    Erreur de syntaxe...

  17. #17
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut
    Je corrige partiellement : il accepte sans les "AS" mais pas dans les colonnes calculées. Dommage...

  18. #18
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    bonjour,

    Visiblement, il s'agit de faire le calcul du montant TTC à partir du montant HT et du taux de TVA.

    Vous n'en avez pas fait une "vraie" colonne dans votre table, et c'est très bien !
    Cependant, vous pouvez faire une colonne calculée, voire même une vue, qui effectue le calcul à partir de la table. ensuite dans vos requetes, vous utilisez directement la vue, ce qui évite de devoir réécrire le calcul à chaque fois, et ce qui laisse en plus un peu de souplesse en cas d'évolution ( du modèle, des règles de calcul...)

  19. #19
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Il me semble qu'ici au contraire il y a une exigence réglementaire de redondance qui stipule de stocker en base à la fois le montant HT, le montant TTC et montant de TVA à des fins de contrôle par l'administration fiscale.
    Il y a très longtemps que je n'ai pas travaillé dans le domaine de la facturation, je peux donc me tromper, mais à vérifier.

  20. #20
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut
    Il s'agit d'une facturation assez complète (j'avais fortement réduit les lignes quand j'ai posté le sujet et là j'ai supprimé tout ce qui est inutile) avec pour la saisie 1 formulaire et 2 sous-formulaires (détail et totalisation).

    - R_ACHATS_SUB pour les lignes.
    - R_ACHATS_SUB_CUMULS pour la totalisation des lignes (requête intermédiaire car je n'ai pas réussi à sommer les lignes correctement dans R_ACHATS_TOTAL. Malgré une tentative de moyennage, les frais de port et d'expédition étaient cumulés dans le calcul de la TVA. Et la longueur des lignes n'a pas aider à m'y retrouver !).
    - R_ACHATS_TOTAL pour la totalisation de la facture.

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    CREATE TABLE T_ACHATS (
    	ACH_ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1, INCREMENT BY 1) NOT NULL,
    	ACH_REM_T DECIMAL(12,2),
    	ACH_ESC_T DECIMAL(12,2),
    	ACH_FRP DECIMAL(12,2),
    	ACH_FRE DECIMAL(12,2),
    	ACH_TVA_T DECIMAL(12,3) NOT NULL
    );
     
    CREATE TABLE T_ACHATS_SUB (
    	ACH_ID INTEGER NOT NULL,
    	ACH_QTE DECIMAL(12,2) NOT NULL,
    	ACH_PUHT DECIMAL(12,2) NOT NULL,
    	ACH_RAB_T DECIMAL(12,2)
    );
     
    -- R_ACHATS
    SELECT
    T_ACHATS.ACH_ID,
    T_ACHATS.ACH_REM_T,
    T_ACHATS.ACH_ESC_T,
    T_ACHATS.ACH_FRP,
    T_ACHATS.ACH_FRE,
    T_ACHATS.ACH_TVA_T
    FROM T_ACHATS;
     
    -- R_ACHATS_SUB
    SELECT ACH_ID,
    PRO_ID,
    ACH_QTE,
    ACH_PUHT,
    ACH_RAB_T,
    ACH_PUHT * ACH_RAB_T AS ACH_RAB,
    ( ACH_QTE * ACH_PUHT * ( 1 - ACH_RAB_T ) ) / ACH_QTE AS ACH_PUNHT,
    ACH_QTE * ACH_PUHT * ( 1 - ACH_RAB_T ) AS ACH_TNHT
    FROM T_ACHATS_SUB ORDER BY ACH_ID ASC;
     
    -- R_ACHATS_SUB_CUMULS
    SELECT ACH_ID,
    SUM( ACH_QTE * ACH_PUHT * ( 1 - ACH_RAB_T ) ) AS ACH_TNHT
    FROM T_ACHATS_SUB GROUP BY ACH_ID;
     
    -- R_ACHATS_TOTAL
    SELECT T_ACHATS.ACH_ID,
    R_ACHATS_SUB_CUMULS.ACH_TNHT AS ACH_TNHT,
    T_ACHATS.ACH_REM_T AS ACH_REM_T,
    ACH_TNHT * ACH_REM_T AS ACH_REM,
    ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) AS ACH_MNC,
    T_ACHATS.ACH_ESC_T AS ACH_ESC_T,
    ( ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) ) * ACH_ESC_T AS ACH_ESC,
    ( ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) ) - ( ( ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) ) * ACH_ESC_T ) AS ACH_MNHT,
    T_ACHATS.ACH_FRP AS ACH_FRP,
    T_ACHATS.ACH_FRE AS ACH_FRE,
    ( ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) ) - ( ( ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) ) * ACH_ESC_T ) + ACH_FRP + ACH_FRE AS ACH_MTHT,
    T_ACHATS.ACH_TVA_T AS ACH_TVA_T,
    ( ( ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) ) - ( ( ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) ) * ACH_ESC_T ) + ACH_FRP + ACH_FRE ) * ACH_TVA_T AS ACH_TVA,
    ( ( ( ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) ) - ( ( ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) ) * ACH_ESC_T ) + ACH_FRP + ACH_FRE ) ) + ( ( ( ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) ) - ( ( ACH_TNHT - ( ACH_TNHT * ACH_REM_T ) ) * ACH_ESC_T ) + ACH_FRP + ACH_FRE ) * ACH_TVA_T ) AS ACH_MTTTC
    FROM T_ACHATS, R_ACHATS_SUB_CUMULS WHERE T_ACHATS.ACH_ID = R_ACHATS_SUB_CUMULS.ACH_ID;

Discussions similaires

  1. Utiliser un alias de colonne dans une clause Where MS SQL
    Par sir dragorn dans le forum Langage SQL
    Réponses: 11
    Dernier message: 12/10/2011, 09h31
  2. Formule colonne calculée
    Par davasm dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 18/07/2006, 16h33
  3. colonne calculée dans une vue
    Par jfc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/04/2006, 16h11
  4. Alias de colonne
    Par plochert dans le forum Oracle
    Réponses: 2
    Dernier message: 18/04/2006, 13h53
  5. [CR] Colonnes calculées
    Par plong dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 23/11/2003, 12h12

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