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

Requêtes et SQL. Discussion :

[SQL] requête analyse croisée comme table dérivée


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Points : 15
    Points
    15
    Par défaut [SQL] requête analyse croisée comme table dérivée
    Il est possible d'utiliser une requête selection comme table dérivée d'une analyse croisée.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM 0+nz(Sum([BIOMASSE_ESP]),0) AS Expr1
    SELECT REL, Sum(BIOMASSE_ESP) AS BIOMASSE_TOTALE
    FROM (SELECT test.ID, test.REL, test.ESP, [POIDS]*[NB] AS BIOMASSE_ESP
    FROM test INNER JOIN test2 ON test.ESP = test2.ESP) temp
    GROUP BY REL
    PIVOT ESP;
    Par contre, je n'arrive pas à faire l'inverse:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT REL, [A]/[NB_IND] AS PROP_A, [B]/[NB_IND] AS PROP_B, [C]/[NB_IND] AS PROP_C, [D]/[NB_IND] AS PROP_D, [E]/[NB_IND] AS PROP_E
    FROM (TRANSFORM 0+nz(Sum([NB]),0) AS Expr1
    SELECT test.REL, Sum(test.NB) AS NB_IND
    FROM test
    GROUP BY test.REL
    PIVOT test.ESP) Requête_test1;
    Comment cela se fait-il?
    J'ai surement une erreur de code
    Merci d'avance,
    Tino

    Base test disponible ci-dessous:
    http://www.developpez.net/forums/att...1&d=1221838589
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonsoir,

    Dans l'aide d'Access 2007, ils indiquent
    L'instruction TRANSFORM est facultative mais, si elle est employée, elle doit
    venir en première position dans une chaîne SQL.
    Il semble bien en effet qu'une sous requête ne peut être qu'une instruction SELECT, dont ne fait pas partie la clause TRANSFORM.../ PIVOT

    La solution est donc, comme tu l'as testée je crois, de créer une requête enregistrée pour ta sous-requête...

    Pour ma part, il est rare que je crée des sous-requêtes dans Access. Généralement, Access semble mieux s'en sortir avec une cascade de requêtes enregistrées, et je trouve cela plus facile à maintenir.
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    J'avais en effet un doute sur l'erreur de code, je me disais que cela pouvait être une limite d'access... (TRNSFORM/PIVOT étant propres à Access).
    Mais dans ces cas-là, je préfère ne pas charger à tord un logiciel, l'erreur humaine est plus que fréquente!
    La solution est donc, comme tu l'as testée je crois, de créer une requête enregistrée pour ta sous-requête...
    Oui, et au moins, çà marche!
    Pour ma part, il est rare que je crée des sous-requêtes dans Access.
    Message reçu
    Généralement, Access semble mieux s'en sortir avec une cascade de requêtes enregistrées, et je trouve cela plus facile à maintenir.
    Au niveau maintenance, c'est vrai que les sous-requêtes imbriquées sur plusieurs niveaux sont nettement moins agréables.
    Par contre, je ne sais pas ce que cela donne niveau différence de vitesses d'exécution:
    http://www.developpez.net/forums/d61...itesse-calcul/
    Mais il y a un plus: dans la fenêtre principale de la base, on s'y repère plus facilement, il n'y a pas un nombre incalculable de requêtes... Il aurait été plus agréable qu'il y ait la possibilité de créer des "dossiers" pour ranger tout ce fatras de sous-sous-sous-sous-requêtes... (peut-être que cela existe sous access2007?).

Discussions similaires

  1. [AC-2007] Champ calculé comme valeur dans une requête analyses croisées avec une seule table
    Par The old fool dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/10/2014, 10h15
  2. [AC-2000] Créer une table à partir d'une requête Analyse croisée
    Par Yokosuma dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/06/2009, 15h32
  3. Arrondis faux sur requêtes analyse croisée et création de table
    Par Banban52 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/07/2007, 10h07
  4. Requête analyse croisée sous SQL SERVER
    Par motus_z dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/02/2006, 16h54
  5. Requêtes analyses croisées sous SQL Server 2000
    Par callo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/09/2005, 19h27

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