Requête microsoft query regroupement de certaines colonnes de 2 tables

poulie

XLDnaute Impliqué
Bonjour à tous,

Je rencontre un souci de rédaction de requête et malgré plusieurs essais je n'obtiens pas le résultat souhaité. D'où cette demande...
Dans un classeur j'ai 2 feuilles avec 1 tableau dans chaque avec des noms de champs identiques ou pas. Dans l'exemple joint, chaque table a des champs identiques.
Je souhaite avec Microsoft Query extraire un seul champ dates avec toutes les dates des 2 tables et extraire les colonnes sommes correspondantes. Je pense mieux préciser ma demande dans le classeur joint.
J'ai tenté avec UNION sans succès. L'objectif étant de créer un TCD.

Merci de ce que vous pourrez faire.
 

Pièces jointes

  • Essai.xlsx
    8.6 KB · Affichages: 73
  • Essai.xlsx
    8.6 KB · Affichages: 89
  • Essai.xlsx
    8.6 KB · Affichages: 90

poulie

XLDnaute Impliqué
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Re,

J'ai ajouté au tableau extrait, 2 colonnes avec une formule conditionnelle de ce type: =SI([@[Véhicules<=6]]=0;"";[@[Véhicules<=6]])
Et lorsque je créé le TCD, même problème. Ou alors il faudrait que je modifie la requête?. C'est à dire ajouter une condition > 0 dans ce texte: (Véhicules*-(Véhicules<=6)) AS ?.
Mais pas dans celui-ci : (Véhicules*-(Véhicules>6) )AS car déjà supérieur à 0?

Sinon Véhicules* avec l'astérisque veut bien dire toutes les cellules de la colonne?

Je ne vois pas trop.

Merci
 

chris

XLDnaute Barbatruc
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

RE
Re,

On va bien finir par s'en sortir de cette histoire. Alors MSQUERY sur feuille Excel nommée "Source" et dans le même classeur. Ceci fonctionne, MSQUERY m'a simplement signalé l'obligation de mettre des Crochets pour le champ AS `Vehicules<=6`. J'ai donc mis AS [Vehicules<=6]
Code:
SELECT `Source$`.Dates, `Source$`.`Km arrivée`, (Véhicules*-(Véhicules<=6)) AS [Véhicules<=6], (Véhicules*-(Véhicules>6) )AS [Véhicules>6]
FROM `C:\.......\h_Poulie.xlsx`.`Source$` `Source$`

A+
P.S. ai utilisé le bouton SQL dans MSQUERY pour écrire la requête.

Yesssssssssss

Msquery ne me signalait rien du tout mais avec les crochets cela marche !
 

chris

XLDnaute Barbatruc
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Bonjour
...
CHRIS: J'avais en effet pensé à distinguer les types de véhicules en 2 colonnes. Mais je ne souhaitais pas trop alourdir le tableau source et faciliter la saisie. J'ai donc testé avec 2 colonnes et les 2 types de véhicules. Pour les véhicules de type 1, j'ai là aussi la somme alors qu'il n'y a pas de zéros?...

Je parlais de la ventilation via Msquery pas de la source initiale mais sans celle-ci, difficile de comparer à tes résultats
 
G

Guest

Guest
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Re,

Hello Chris:) : tant mieux:)


Poulie à dit:
Sinon Véhicules* avec l'astérisque veut bien dire toutes les cellules de la colonne?
Pas du tout, dans un champ calculé c'est l'opérateur de multiplication.
Véhicules<=6 renverra pour chaque ligne Vrai (Vrai = -1) ou Faux (Faux = 0)
Donc -(Véhicules<=6) renverra soit --1 (donc 1), soit -0 (donc 0)
Donc
(Véhicules*-(Véhicules<=6)) :nombre contenu dans le champ Véhicule mutliplié soit par 0 (donc 0) soit par 1 (donc contenu du champ)

Pour ton TCD j'ai bien peur que cela ne soit pas possible. A moins que Chris ne trouve une solution.

A+
 

chris

XLDnaute Barbatruc
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Re,

J'ai trouvé la source : voici ma requête (avec un As Type, merci Hasco ;))
Code:
SELECT `Source$`.Dates, `Source$`.`Km en charge`, `Source$`.Véhicules, '<=6' as [type]  FROM `E:\ZZ_Tempo\Forums\Essai-2Msquery.xlsx`.`Source$` `Source$` where `Source$`.`Véhicules`<=6 union  all SELECT `Source$`.Dates, `Source$`.`Km en charge`, `Source$`.Véhicules, '>6' as [type]  FROM `E:\ZZ_Tempo\Forums\Essai-2Msquery.xlsx`.`Source$` `Source$` where `Source$`.`Véhicules`>6

Je ne sais plus si, comme dans Access mais pas SqlServer, on peut mettre la condition directement dans le champ d'où l'union.

Edit : si on peut
Code:
SELECT `Source$`.Dates, `Source$`.`Km en charge`, `Source$`.Véhicules, iif(`Source$`.Véhicules<=6,'<=6','>6') as [type]  FROM `E:\ZZ_Tempo\Forums\Essai-2Msquery.xlsx`.`Source$` `Source$`
 

Pièces jointes

  • Essai-2Msquery.xlsx
    300.2 KB · Affichages: 24
Dernière édition:

poulie

XLDnaute Impliqué
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Chris,

Merci encore

J'étais justement en train de préparer le tableau source en l'allégeant... J'espère ainsi ma demande plus claire
 

Pièces jointes

  • essai 3.xlsx
    316.6 KB · Affichages: 24

chris

XLDnaute Barbatruc
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Re,

Donc vois ma toute dernière requête au #21 et le fichier Excel (qui contient l'avant dernière mais le résultat est le même : c'est juste plus court)
 
G

Guest

Guest
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Re,

Hello, Chris:) Peut s'écrire avec une condition dans le champ:

SELECT `Source$`.Dates, `Source$`.`Km en charge`, `Source$`.Véhicules,IIF(`Source$`.Véhicules<=6,'<=6','>6') AS [Type]
FROM `C:\.........\Essai-2Msquery.xlsx`.`Source$` `Source$`
P.S. sur la base du fichier de Chris du post #21
A+

[Edit] Arf... Arrivé après la bataille!
 
Dernière modification par un modérateur:

poulie

XLDnaute Impliqué
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Bonjour Chris, Bonjour Hasco,

J'ai donc testé cette requête qui exauce mon souhait.

SELECT Internes.Dates, Internes.`Km en charge`, Internes.Véhicules, iif(Internes.Véhicules<=6,'<=6','>6') as [type] FROM Internes Internes

Ai-je compris ?: les champs souhaités (SELECT) puis la condition sur la colonne véhicules (iif(Internes.Véhicules<=6,'<=6','>6') as [type]) puis la source (FROM Internes Internes).

Cependant, je ne comprends pas bien "l'ordre" de la condition et as [type]: iif(Internes.Véhicules<=6,'<=6','>6') as [type]. Puis-je user de ton temps pour une explication?

Dans tous les cas un grand merci
 
G

Guest

Guest
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Bonjour,

(iif(Internes.Véhicules<=6,'<=6','>6') as [type]) = Création d'un champ calculé nommé 'type' (AS [Type]) qui renverra pour chaque ligne de la table, soit la chaine "<=6" pour les Véhicules <=6 soit ">6" pour les Véhicules >6

Est-ce plus clair?
Sinon je t'invite à consulter: Le SQL de A à Z - SGBD, SQL et types de données

P.S. si tu interroges par sql un classeur ouvert ou actif, enregistre le d'abord, sinon ta requête risque de ne pas refléter les dernières modifications du fichier.

A+
 

poulie

XLDnaute Impliqué
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

re bonjour,

Oui, c'est plus clair. C'est pour cela que j'ai comme nom de champ dans le TCD: Type. En effet, avant de poster la question j'ai consulté ce lien (tant bien que mal....)

Merci pour ces informations
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 061
Membres
103 447
dernier inscrit
DamD