SQL Groub by date

Résolu
Bonjour,
Je veux faire cette requête SQL :
SELECT date, COUNT(nom) as nombre FROM table GROUP BY date
Avoir le nombre de noms par mois.

Seulement la date est au format YYYYMMDD, il faudrait par exemple qu'il me regroupe : 20081025 et 20081030 en 200810

Merci de votre aide !
Configuration: Windows XP
Safari 525.19

8 réponses

  1. Merci Nookz, Je ne connaissais pas cette fonction, si je fais cette requette :
    SELECT SUBSTR(date,0,2), COUNT(nom) as nombre FROM table GROUP BY SUBSTR(date,0,2)
    Il me sort :
    date | nombre
    (vide) | 12308

    12308 doit être le total de toute ma table !
    Je cherche a avoir :
    date | nombre
    200810 | 12
    200811 | 2
    200812 | 7

    Je précise que je fais la requête via ODBC avec du code VBA sous Excel
    1. déjà pour votre problématique il faudrait mettre SUBSTR(date,0,6)
      après je ne sais pas si le SUBSTR est bien pris en compte dans votre cas :s
      essayez ceci pour vérifier :
      SELECT SUBSTR(date,0,6), COUNT(nom) as nombre FROM table
    2. @NookZLe SUBSTR n'a pas l'air de marcher, si je ne mets pas de group by il me met une 'erreur ODBC 1004'
      J'ai essayer un LEFT sans succès :(
  2. Bonjour,

    ceci est possible je crois grâce au fonction des SGBD.

    Regarde ce site, tu trouvera peut être ton bonheur :
    https://sqlpro.developpez.com/cours/sqlaz/fonctions/

    Bonne chance
    1. Arf, j'en ai tenté plusieurs sans succès ! Merci quand même !
    2. @Jonas87Avez-vous fait d'autres requêtes?

      si non exécuter ceci :
      SELECT (nom) as nombre FROM table

      pour être sûr que votre connexion est fonctionnelle
  3. Oui ma première requête:
    SELECT date, COUNT(nom) as nombre FROM table GROUP BY date
    Cela fonctionne mais avec une table où la date est sous la forme YYYYMM

    Mais dans la table où la date est de la forme YYYYMMDD je n'y arrive pas !

    Je précise également que je n'ai pas les droits d'écriture dans la base de donnée...
    1. avez-vous essayé SUBSTRING au lieu de SUBSTR?
  4. Substring ne fonctionne pas, mais substr doit fonctionner car il ne me mets pas d'erreur odbc mais m'affiche juste le total de l'année (cf post 2)
    1. et si vous faites juste : SELECT SUBSTR(date,0,6) FROM table
      il vous sort quoi?
  5. Il ne me sort rien dans ce cas (même pas une erreur !)
    Je n'avais pas précisé mais date est un champ de ma table.
    1. Vous avez essayé LEFT en faisant LEFT(date;6), c'est bien ça?

      Sur un autre topic ils sdisent d'utiliser :
      mid(chaine, depart, longueur)
  6. J'ai bien testé LEFT et MID, ils ne semblent pas fonctionner, j'ai a chaque fois une erreur ODBC
    1. C'est bon j'ai trouvé ! Je suis un gros nul ! :)
      SELECT SUBSTR(date,1,6), COUNT(nom) as nombre FROM table GROUP BY SUBSTR(date,1,6)

      Il ne fallait pas mettre SUBSTR(date,0,6) mais SUBSTR(date,1,6) !!
      Le 1 c'est l'index (donc la première lettre de l'année : le début de la chaîne à extraire !)

      Merci beaucoup pour ton aide