OVH Cloud OVH Cloud

Requete SQL

6 réponses
Avatar
Ducados
Bonjour,
Au départ d'un fichier HF contenant entre autre:
- mDate texte (8caract AAAAMMJJ)
- mLoca texte (35)
- + différentes rubriques non nécessaires ici.
Je souhaiterais, compter le nombre d'enregistrement, par localité et par
tranche d'année de 10 ans.
Il s'agit d'une base de recherche sur documents d'archive, les dates
commence en 1600 (eh oui c'est pas une erreur), En prenant les 3 premiers
caract de la date j'aurrai donc mes tranches !
de 160(0), 160(2), 161(1) etc.. de 1600 à 1900 = 30 colonnes
Comment dans le SELECT attribué a ma sélection le nom de cette sélection
(c'est pas clair), j'essaye de m'expliquer pour les enregistrement
correspondant a :
"160" avoir un nom AS "160"+"0" correspondant aux années 1600 à 1609
"161" AS "161"+"0" correspondant aux années 1610 à 1619 etc...
J'apprécierais énormément votre aide, il s'agit de ma 1er requête.
Cordialement, Daniel

6 réponses

Avatar
Roumegou Eric
Ducados a écrit :
Bonjour,
Au départ d'un fichier HF contenant entre autre:
- mDate texte (8caract AAAAMMJJ)
- mLoca texte (35)
- + différentes rubriques non nécessaires ici.
Je souhaiterais, compter le nombre d'enregistrement, par localité et par
tranche d'année de 10 ans.
Il s'agit d'une base de recherche sur documents d'archive, les dates
commence en 1600 (eh oui c'est pas une erreur), En prenant les 3 premiers
caract de la date j'aurrai donc mes tranches !
de 160(0), 160(2), 161(1) etc.. de 1600 à 1900 = 30 colonnes
Comment dans le SELECT attribué a ma sélection le nom de cette sélection
(c'est pas clair), j'essaye de m'expliquer pour les enregistrement
correspondant a :
"160" avoir un nom AS "160"+"0" correspondant aux années 1600 à 1609
"161" AS "161"+"0" correspondant aux années 1610 à 1619 etc...
J'apprécierais énormément votre aide, il s'agit de ma 1er requête.
Cordialement, Daniel



Je ne connais pas le sql sur HF mais il faut que tu cherches du côté de
GROUP BY et des fonctions de formatage de dates
(TO_CHAR en oracle serait super)

Peut être DateVersChaine est il accepté en SQL HF ?

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Ducados
Salut Eric,
La date est en format texte, il n'est donc pas nécessaire de passer par un
DateVersChaine ni un TO-CHAR, mon problème est de répartir les différents
enregistrements dans les 30 colonnes, comment libeller le SELECT et le GROUP
BY ?
Merci de ton attention
Daniel

"Roumegou Eric" a écrit dans le message de
news:
Ducados a écrit :
> Bonjour,
> Au départ d'un fichier HF contenant entre autre:
> - mDate texte (8caract AAAAMMJJ)
> - mLoca texte (35)
> - + différentes rubriques non nécessaires ici.
> Je souhaiterais, compter le nombre d'enregistrement, par localité et par
> tranche d'année de 10 ans.
> Il s'agit d'une base de recherche sur documents d'archive, les dates
> commence en 1600 (eh oui c'est pas une erreur), En prenant les 3


premiers
> caract de la date j'aurrai donc mes tranches !
> de 160(0), 160(2), 161(1) etc.. de 1600 à 1900 = 30 colonnes
> Comment dans le SELECT attribué a ma sélection le nom de cette sélection
> (c'est pas clair), j'essaye de m'expliquer pour les enregistrement
> correspondant a :
> "160" avoir un nom AS "160"+"0" correspondant aux années 1600 à 1609
> "161" AS "161"+"0" correspondant aux années 1610 à 1619 etc...
> J'apprécierais énormément votre aide, il s'agit de ma 1er requête.
> Cordialement, Daniel

Je ne connais pas le sql sur HF mais il faut que tu cherches du côté de
GROUP BY et des fonctions de formatage de dates
(TO_CHAR en oracle serait super)

Peut être DateVersChaine est il accepté en SQL HF ?

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
mat
Roumegou Eric wrote:
Je ne connais pas le sql sur HF mais il faut que tu cherches du côté
de GROUP BY et des fonctions de formatage de dates (TO_CHAR en oracle
serait super)

Peut être DateVersChaine est il accepté en SQL HF ?



Oui, mais je ferais

SELECT ... LEFT(mDate,3) AS GroupeDate ...

et ensuite faire un GROUP BY GroupeDate

ce que devrait permettre de compter les enregistrements par décennie.

Je ne crois pas qu'on puisse fabriquer le libellé au même temps, mais le
contenue de GroupeDate servira de le créer au moment de
l'affichage/impression.
Avatar
Roumegou Eric
mat avait prétendu :
Roumegou Eric wrote:
Je ne connais pas le sql sur HF mais il faut que tu cherches du côté de
GROUP BY et des fonctions de formatage de dates (TO_CHAR en oracle
serait super)

Peut être DateVersChaine est il accepté en SQL HF ?



Oui, mais je ferais

SELECT ... LEFT(mDate,3) AS GroupeDate ...

et ensuite faire un GROUP BY GroupeDate

ce que devrait permettre de compter les enregistrements par décennie.



Ca me paraît bien

Je ne crois pas qu'on puisse fabriquer le libellé au même temps,



en SQL si! il suffit d'utiliser les opérateurs qui peuvent être le |,
ou l'instruction CONCAT.
A voir si cela fn avec HF

mais le contenu de GroupeDate servira de le créer au moment de
l'affichage/impression.



--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
mat
mat wrote:
Roumegou Eric wrote:

Je ne connais pas le sql sur HF mais il faut que tu cherches du côté
de GROUP BY et des fonctions de formatage de dates (TO_CHAR en oracle
serait super)

Peut être DateVersChaine est il accepté en SQL HF ?




Oui, mais je ferais

SELECT ... LEFT(mDate,3) AS GroupeDate ...

et ensuite faire un GROUP BY GroupeDate

ce que devrait permettre de compter les enregistrements par décennie.

Je ne crois pas qu'on puisse fabriquer le libellé au même temps, mais le
contenue de GroupeDate servira de le créer au moment de
l'affichage/impression.



Stupide, bien sûr on peut...

SELECT ... LEFT(mDate,3) + '0' AS GroupeDate ... ,
COUNT mDate as NbDates
...
GROUP BY GroupeDate

sauf erreur de ma part, NbDate devrait contenir le nombre de dates par
décennie et le contenu de GroupeDate servira comme libellé (1600, 1610,
1620 etc).
Avatar
Ducados
C'que vous êtes sympa tous les deux.
J'ai travaillé il y a très longtemmmmmps en DB2 sur IBM3090 et cela me
rappelle des bribes tel que "|" pour concaténer, dire que j'avais une très
belle doc à l'époque et que je ne l'ai pas gardé ???
En lisant votre réponse, je suis persuadé d'arriver à mes fin !
Encore merci du coup de pouce.
Daniel

> Oui, mais je ferais
> SELECT ... LEFT(mDate,3) AS GroupeDate ...
> et ensuite faire un GROUP BY GroupeDate
> ce que devrait permettre de compter les enregistrements par décennie.
> Je ne crois pas qu'on puisse fabriquer le libellé au même temps, mais le
> contenue de GroupeDate servira de le créer au moment de
> l'affichage/impression.

Stupide, bien sûr on peut...

SELECT ... LEFT(mDate,3) + '0' AS GroupeDate ... ,
COUNT mDate as NbDates
...
GROUP BY GroupeDate

sauf erreur de ma part, NbDate devrait contenir le nombre de dates par
décennie et le contenu de GroupeDate servira comme libellé (1600, 1610,
1620 etc).