Objectif #
Dans cet exemple, vous allez voir comment créer un graphique qui affiche les dernières périodes avec une modification dynamique des abscisses (Année, Mois, Semaine) à partir d’un composant Liste radio.
Mise en oeuvre #
SQL #
La construction de la requête réside sur une structure à base d’UNION. Le paramètre :Choix permettant de sélectionner la bonne requête temporelle (Année, Mois ou Semaine). Le paramètre :BIBOARDCALC permet de ramener la date d’aujourd’hui quand sa valeur est à « _DATE ».
Code #
SELECT
Rq.Temps,
Rq.Quantités
FROM
(
SELECT
CAST(YEAR(demonstration.dbo.Commandes.DateLivraison) AS varchar) AS Temps,
SUM(demonstration.dbo.Commandes_Details.Quantite) AS Quantités,
YEAR(demonstration.dbo.Commandes.DateLivraison) AS Tri1,
YEAR(demonstration.dbo.Commandes.DateLivraison) AS Tri2
FROM demonstration.dbo.Commandes
INNER JOIN demonstration.dbo.Commandes_Details
ON demonstration.dbo.Commandes.NumCommande = demonstration.dbo.Commandes_Details.NumCommande
WHERE demonstration.dbo.Commandes.DateLivraison > DATEADD(year, -25, :BIBOARDCALC1)
AND :Choix = 'Année'
GROUP BY
YEAR(demonstration.dbo.Commandes.DateLivraison),
YEAR(demonstration.dbo.Commandes.DateLivraison)
UNION
SELECT
CAST(YEAR(demonstration.dbo.Commandes.DateLivraison) AS varchar)
+ '-'
+ CAST(MONTH(demonstration.dbo.Commandes.DateLivraison) AS varchar) AS Temps,
SUM(demonstration.dbo.Commandes_Details.Quantite) AS Quantités,
YEAR(demonstration.dbo.Commandes.DateLivraison) AS Tri1,
MONTH(demonstration.dbo.Commandes.DateLivraison) AS Tri2
FROM demonstration.dbo.Commandes
INNER JOIN demonstration.dbo.Commandes_Details
ON demonstration.dbo.Commandes.NumCommande = demonstration.dbo.Commandes_Details.NumCommande
WHERE :Choix = 'Mois'
AND demonstration.dbo.Commandes.DateLivraison > DATEADD(month, -180, :BIBOARDCALC1)
GROUP BY
CAST(YEAR(demonstration.dbo.Commandes.DateLivraison) AS varchar)
+ '-'
+ CAST(MONTH(demonstration.dbo.Commandes.DateLivraison) AS varchar),
YEAR(demonstration.dbo.Commandes.DateLivraison),
MONTH(demonstration.dbo.Commandes.DateLivraison)
UNION
SELECT
CAST(YEAR(demonstration.dbo.Commandes.DateLivraison) AS varchar)
+ '-'
+ CAST(DATEPART(week, demonstration.dbo.Commandes.DateLivraison) AS varchar) AS Temps,
SUM(demonstration.dbo.Commandes_Details.Quantite) AS Quantités,
YEAR(demonstration.dbo.Commandes.DateLivraison) AS Tr1,
DATEPART(week, demonstration.dbo.Commandes.DateLivraison) AS Tri2
FROM demonstration.dbo.Commandes
INNER JOIN demonstration.dbo.Commandes_Details
ON demonstration.dbo.Commandes.NumCommande = demonstration.dbo.Commandes_Details.NumCommande
WHERE :Choix = 'Semaine'
AND demonstration.dbo.Commandes.DateLivraison > DATEADD(week, -750, :BIBOARDCALC1)
GROUP BY
CAST(YEAR(demonstration.dbo.Commandes.DateLivraison) AS varchar)
+ '-'
+ CAST(DATEPART(week, demonstration.dbo.Commandes.DateLivraison) AS varchar),
YEAR(demonstration.dbo.Commandes.DateLivraison),
DATEPART(week, demonstration.dbo.Commandes.DateLivraison),
DATEPART(week, demonstration.dbo.Commandes.DateLivraison)
) Rq
ORDER BY
Rq.Tri1,
Rq.Tri2
Note : Les valeurs numériques dans les formules DATEADD(week, -750, :BIBOARDCALC1) sont à adapter en fonction du contexte de votre projet. Si le test est effectué sur le schéma démonstration, il faut aussi effectué une modification. Les valeurs exemples dans ce cas de tests sont données pour un test en mai 20226.
Paramétrage #
Paramètre Valeur Type
BIBOARDCALC1 _DATE Chaîne de caractères
Choix Chaîne de caractères (pour test, on peut renseigner la Valeur par : Année, Mois ou Semaine
Tableaux de bord #
Visuel #

Configuration #
Liste Radio #
- Liste Radio sans Datasource
- Eléments: Année, Mois, Semaine
- Rafraîchissement auto : coché
- Colonnes : 3
- Lien : Liste radio –> Graphique
Graphique – Histogramme #
- Abscisse : Temps
- Ordonnée : Quantités
Visuel final #

