Vous n'êtes pas identifié(e).
Pages : 1
bonjour,
j'aimerais affiché les semaine pour un nombre de jours que je récupère.
je m'explique, j'ai dans une table un attribut date qui correspond à la date de vente d'un article que je peux que récupérer sous la forme 2013-03-07.
donc j'aimerais récupérer les date : 2013-03-01 ,2013-03-02 ,2013-03-03, 2013-03-04, 2013-03-05, 2013-03-06, 2013-03-07
donc que c'est jours soit égale à 1 semaine = 7 jours.
avez-vous une idée de la requête que cela peut être SVP ?
je sais pas si vous avez bien compris mon problème.
merci d'avance
Marc .
Hors ligne
Bonjour,
SELECT ('2013-03-07'::date - i) AS d FROM generate_series(0,6) i ORDER BY d ;
Julien.
https://rjuju.github.io/
Hors ligne
merci rjuju de ta réponse rapide ! mais je comprend pas la requête que tu me donnes ?
cela m'affiche les années (7 fois)
Marc .
Hors ligne
La mienne est 2 fois plus rapide (60 microsecondes contre 120 pour la tienne rjuju)
select generate_series(timestamptz '2013-03-07'-interval '6 day',timestamptz '2013-03-07',interval '1 day')::date;
Sinon, c'est quoi le problème de l'année marc73450 ?
Marc.
Hors ligne
Quelle version de postgres utilisez-vous ?
select ('2013-03-07'::date - i) as d from generate_series(0,6) i order by d ;
d
------------
2013-03-01
2013-03-02
2013-03-03
2013-03-04
2013-03-05
2013-03-06
2013-03-07
(7 lignes)
Julien.
https://rjuju.github.io/
Hors ligne
moi cela m'affiche que 2013.
select ('2013-03-07'::date - i) as d from generate_series(0,6) i order by d ;
d
------------
2013-03-01
2013-03-02
2013-03-03
2013-03-04
2013-03-05
2013-03-06
2013-03-07
(7 lignes)
comment exploité cela ?
ma version de postgresql est 1.16.1 .
Dernière modification par marc73450 (07/03/2013 11:48:29)
Marc .
Hors ligne
j'aimerais affiché ma base suivant une période choisis comme ceci :
http://cjoint.com/?CChluYAJVpN
je visualise mon tableau sur 2 jours !
est-ce plus facile de compréhension ?
merci
Marc .
Hors ligne
Houla, je crois que j'ai compris. Vous voulez sélectionner les enregistrements de la table qui sont entre deux dates…
SELECT * FROM ma_table WHERE mon_champ_date >= '2013-03-07'-interval '6 days' and date < '2013-03-07'
C'est plutôt ça que vous cherchez ?
Marc.
Hors ligne
j'ai donc effectué cette requête :
SELECT * FROM casse WHERE date_casse >= '2013-03-06'-interval '6 days' and date < '2013-03-06'
mais j'ai cette erreur :
ERREUR: syntaxe en entrée invalide pour le type interval : « 2013-03-06 »
LINE 1: SELECT * FROM casse WHERE date_casse >= '2013-03-06'-interva...
avez vous une idée ?
Marc .
Hors ligne
ah… oui, il manque un cast ou un to_date sur la première date, il ne comprend pas:
SELECT * FROM casse WHERE date_casse >= date '2013-03-06'-interval '6 days' and date < '2013-03-06'
Marc.
Hors ligne
okay ca marche ! mais quel est la différence entre ces 2 requêtes ?
SELECT * FROM casse WHERE date_casse between '2013-03-01' and '2013-03-06'
et
SELECT * FROM casse WHERE date_casse >= date '2013-03-06'-interval '6 days' and date_casse < '2013-03-06'
je veux affiché le champ casse_uvc et le champ casse_pvttc autant de fois que il y a de jours sélectionné .
Marc .
Hors ligne
C'est juste que je n'étais pas sûr que vous saviez calculer les dates. Par contre la votre est meilleure: avec mon < il me manquait évidemment le 6 mars.
Marc.
Hors ligne
ducou ce n'est pas tout a fait ce que je voulais .
je veux affiché le champ casse_uvc et le champ casse_pvttc autant de fois que il y a de jours sélectionné .
avez vous une idée ?
Marc .
Hors ligne
Vous voulez construire un tableau croisé dynamique avec une colonne par jour de la semaine, en SQL ?
C'est possible avec PostgreSQL, en utilisant tablefunc: http://docs.postgresql.fr/9.2/tablefunc.html
Marc.
Hors ligne
j'ai voulu essayé un exemple du liens que tu m'a donné :
mais cela me renvoie l'erreur !
ERREUR: la fonction crosstab(unknown, unknown) n'existe pas
LINE 1: select * from crosstab(
^
HINT: Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.
as-tu une idée ?
Dernière modification par marc73450 (08/03/2013 11:39:23)
Marc .
Hors ligne
j'ai donc réussi à faire cela :
select * from crosstab(
'select libelle_article, date_casse, casse_uvc from casse order by 1',
'select m from generate_series(1,12) m'
) as (
libelle_article varchar,
"Jan" int,
"Feb" int,
"Mar" int,
"Apr" int,
"May" int,
"Jun" int,
"Jul" int,
"Aug" int,
"Sep" int,
"Oct" int,
"Nov" int,
"Dec" int
);
mais je n'arrive pas à les affiché jours par jours au lieu de mois par mois
mais en saisissant une valeur min de la date et une valeur max.
avez vous une idée ?
merci
Marc .
Hors ligne
personne aurait une idée de requête ? parce que je n'y arrive pas du tout
Marc .
Hors ligne
Honnêtement, sans un exemple de données, et un exemple précis de ce que vous voulez obtenir comme résultat, ça va être difficile de vous aider.
Si vous voulez un coup de main, mettez nous une table exemple avec une dizaine d'enregistrements, et le résultat que vous souhaitez.
Marc.
Hors ligne
voici ce que j'aimerais faire, affiché plusieurs article avec leur casse jours par jours, avec une date début et une date fin.
http://cjoint.com/?CChluYAJVpN
merci
Marc .
Hors ligne
Ça, c'est juste de l'affichage. À quoi exactement ressemblerait la table de départ ? (avec des données qui correspondent au 3 ou 4 premiers enregistrements du tableau)
Marc.
Hors ligne
elle ressemble à cela ma table :
CREATE TABLE casse
(
libelle_article text NOT NULL,
code_ean bigint,
libelle_rayon text NOT NULL,
casse_uvc integer,
casse_pvttc money,
date_casse date
)
avec ces données dans la table : http://cjoint.com/?CCmjrRpleRp
résultat :
01/01/2013 || 02/01/2013 || 03/01/2013
| casse(€)|casse(unité)|| casse(€)|casse(unité)|| casse(€)|casse(unité)|
article 1 | 12€50 |2 | 13€ | 1 | 5€ | 3
article 2 | 12€ |21 | 13€ | 11 | 2€ | 1
article 3 | 1€50 |24 | 13€ | 8 | 9€ | 3
article 4 | 2€50 |2 | 13€ | 1 | 51€ | 2
c'est ce que vous voulez ?
Dernière modification par marc73450 (12/03/2013 10:18:58)
Marc .
Hors ligne
Au final dans quelle application vous voulez afficher votre tableau : tableur, navigateur, sortie de fichier csv....?
Vu comme ça, si vous voulez un affichage de ce type dans pgadmin, je ne vois pas bien comment c'est possible, à moins de concaténer les champ casse_€ et casse_unité au préalable
Hors ligne
je l'affiche sur pentaho report designer ! avez-vous une idée ? je cherche une requête qui permettra d'affiché
comme cela
Marc .
Hors ligne
Si c'est sur pentaho, même pas la peine de vous embêter avec crosstab sous postgres:
Marc.
Hors ligne
merci c'est ce que je voulais, mais en anglais pas facile.
Marc .
Hors ligne
Pages : 1