Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > BIRT
BIRT Forum d'entraide sur BIRT (Business Intelligence and Reporting Tools). Avant de poster --> FAQ BIRT,Tutoriels BIRT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2010, 10h40   #1
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Par défaut Cross tab avec des dates

Bonjours à tous et à toutes,

Je possede une base de donnée de commande et livraison de bonbons.
J'aimerai afficher dans une cross tab les commande et les livraisons pour un mois donnée. Ceci ressemblerai à la piece jointe.

Pour ce faire je possede des champs suivants:
_ Code
_ Nom
_ Prenom
_ Adresse

_ Type Bonbon

_ DateLivraison: Pouvant contenir plusieurs Date commande
_ DateCommande: Lié à un client, un type de bonbon et une quantité

_ quantite


Quelqu'un aurait une idée s'il vous plait?

Merci d'avance
Images attachées
Type de fichier : jpg illustration.JPG (17,6 Ko, 13 affichages)
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 09h44   #2
Membre confirmé
 
Nicolas Vives
Inscription : avril 2010
Messages : 178
Détails du profil
Informations personnelles :
Nom : Nicolas Vives

Informations forums :
Inscription : avril 2010
Messages : 178
Points : 212
Points : 212
C'est très simple, quand tu fais un groupe sur un champ date dans un data cube, tu peux la décomposer de toutes les manières classiques : par an, trimestre, mois, semaine, jour...
A toi de sélectionner le niveau de rupture qui te correspond. Ensuite, dans ce que tu voudras afficher dans tes titres de colonnes, utilise l'expression builder avec les élements du menu "current data cube" ; tu retrouveras ton groupe sur ta date, avec chaque rupture, et à la fin, la date complète elle-même.
nicolas.1.vives est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 10h20   #3
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Citation:
Envoyé par nicolas.1.vives Voir le message
C'est très simple, quand tu fais un groupe sur un champ date dans un data cube, tu peux la décomposer de toutes les manières classiques : par an, trimestre, mois, semaine, jour...
A toi de sélectionner le niveau de rupture qui te correspond. Ensuite, dans ce que tu voudras afficher dans tes titres de colonnes, utilise l'expression builder avec les élements du menu "current data cube" ; tu retrouveras ton groupe sur ta date, avec chaque rupture, et à la fin, la date complète elle-même.
Merci de ta réponse, Cependant, les dates de livraison et de commande sont différentes, Alors quelle date j'utilise? Il me faudrait les deux dates afin d'avoir un affichage similaire à l'illustration joint. Ensuite comment construire mes lignes sachant que je veux une ligne pour les commande et une ligne pour les livraison avec seulement une opération qui est la quantité?
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 14h07   #4
Membre confirmé
 
Nicolas Vives
Inscription : avril 2010
Messages : 178
Détails du profil
Informations personnelles :
Nom : Nicolas Vives

Informations forums :
Inscription : avril 2010
Messages : 178
Points : 212
Points : 212
Ca dépend de la structure de ton dataset. Tu pourrais donner le dataset correspondant à ton screenshot d'exemple ? Parce que le modèle de données que tu as donné n'est pas très clair, je ne comprends pas comment s'articulent les dates entre elles.
nicolas.1.vives est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 16h00   #5
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Citation:
Envoyé par nicolas.1.vives Voir le message
Ca dépend de la structure de ton dataset. Tu pourrais donner le dataset correspondant à ton screenshot d'exemple ? Parce que le modèle de données que tu as donné n'est pas très clair, je ne comprends pas comment s'articulent les dates entre elles.
Voici la requete de mon data Set:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SELECT CMD.dateCommande,
  L.dateLivraison,
	T.libelle AS type, 
	C.code,
	C.nom, 
	C.prenom, 
	C.adresse,
        CMD.quantite
FROM clients C
    INNER JOIN commandes CMD ON CMD.client_id = C.id
    INNER JOIN types T ON T.id = CMD.type_id
    LEFT JOIN livraisons L ON L.commande_id = CMD.id
WHERE CMD.dateCommande >= ?
AND CMD.dateCommande <= ?
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 11h02   #6
Membre confirmé
 
Nicolas Vives
Inscription : avril 2010
Messages : 178
Détails du profil
Informations personnelles :
Nom : Nicolas Vives

Informations forums :
Inscription : avril 2010
Messages : 178
Points : 212
Points : 212
Ce serait mieux d'avoir une seule date par ligne avec une colonne supplémentaire disant s'il s'agit d'une commande ou d'une livraison. Bref, une union sur tes tables "commandes" et "livraisons". Avec un peu de bol, elles ont la même structure ?
nicolas.1.vives est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 11h14   #7
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Citation:
Envoyé par nicolas.1.vives Voir le message
Ce serait mieux d'avoir une seule date par ligne avec une colonne supplémentaire disant s'il s'agit d'une commande ou d'une livraison. Bref, une union sur tes tables "commandes" et "livraisons". Avec un peu de bol, elles ont la même structure ?
C'est une bonne idée, je n'y avais pas pensé! Ce n'est pas tout à fais la même structure mais je vais essayer!
Merci
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 14h19   #8
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Apparemment ceci fonctionne très bien mis à part que je n'ai pas tous les jours du mois mais ceci est un autre problème.
Voici la requête modifiée:
Code :
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
 
SELECT CMD.dateCommande,
	T.libelle AS type, 
	C.code,
	C.nom, 
	C.prenom, 
	C.adresse,
        CMD.quantite,
        0 AS type
FROM clients C
    INNER JOIN commandes CMD ON CMD.client_id = C.id
    INNER JOIN types T ON T.id = CMD.type_id
    LEFT JOIN livraisons L ON L.commande_id = CMD.id
WHERE CMD.dateCommande >= ?
AND CMD.dateCommande <= ?
UNION
SELECT L.dateLivraison,
	T.libelle AS type, 
	C.code,
	C.nom, 
	C.prenom, 
	C.adresse,
        CMD.quantite,
        1 AS type
FROM clients C
    INNER JOIN commandes CMD ON CMD.client_id = C.id
    INNER JOIN types T ON T.id = CMD.type_id
    LEFT JOIN livraisons L ON L.commande_id = CMD.id
WHERE L.dateLivraison >= ?
AND L.dateLivraison <= ?
Merci pour ton aide
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h29.


 
 
 
 
Partenaires

Hébergement Web