IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Boucle while (débutant)


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    septembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : septembre 2022
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Boucle while (débutant)
    Salut tout le monde,

    Dans mon code, j'essaie de voir combien de personnes sont entrées/parties par mois en 2021 et 2022 et je ne sais pas comment faire en sorte que la boucle incrémente l'année lorsqu'elle atteint décembre.

    Le code :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    DECLARE @var_month INT, @nbre int, @var_year int, @mois nvarchar(10)
    set @var_month = 1
    set @var_year = 2021
    while @var_year < 2023
    BEGIN
    	while @var_month < 13
    	begin
    	SELECT @nbre = COUNT(*)
    	FROM [BRICS].[dbo].[CONTRAT]
    	where MONTH ( DATE_SORTIE ) = @var_month and YEAR(DATE_SORTIE)= @var_year
    SELECT @mois = CASE @var_month
             WHEN 1 THEN 'janvier'
             WHEN 2 THEN 'février'
             WHEN 3 THEN 'mars'
             WHEN 4 THEN 'avril'
             WHEN 5 THEN 'mai'
             WHEN 6 THEN 'juin'
             WHEN 7 THEN 'juillet'
             WHEN 8 THEN 'août'
             WHEN 9 THEN 'septembre'
             WHEN 10 THEN 'octobre'
             WHEN 11 THEN 'novembre'
             ELSE 'décembre'
    END;
    print 'le nombre de sortie en ' + @mois +' '+ convert(VARCHAR, @var_year) + ' est: ' + convert(VARCHAR, @nbre)
    set @var_month = 1 + @var_month
    set @var_year = 1 + @var_year
    END
    END


    Merci d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    janvier 2009
    Messages
    4 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : janvier 2009
    Messages : 4 965
    Points : 12 073
    Points
    12 073
    Par défaut
    Bonjour,
    Pourquoi passer par une boucle, alors qu'une simple requête fera le job ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    select MONTH ( DATE_SORTIE ),year ( DATE_SORTIE ),CASE @var_month
             WHEN 1 THEN 'janvier'
             WHEN 2 THEN 'février'
             WHEN 3 THEN 'mars'
             WHEN 4 THEN 'avril'
             WHEN 5 THEN 'mai'
             WHEN 6 THEN 'juin'
             WHEN 7 THEN 'juillet'
             WHEN 8 THEN 'août'
             WHEN 9 THEN 'septembre'
             WHEN 10 THEN 'octobre'
             WHEN 11 THEN 'novembre'
             ELSE 'décembre',
    count(*)
    from [BRICS].[dbo].[CONTRAT]
    where year(DATE_SORTIE) between 2021 and 2022
    group by MONTH ( DATE_SORTIE ),year ( DATE_SORTIE )

    Je te laisse formater le résultat du SELECT, mais l'idée est là.

    Tatayo.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    septembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : septembre 2022
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    bonjour,
    merci pour ton retour
    je fais une boucle parce que je veux avoir le nombre d'entrant/sortant pour chaque mois de chaque année.
    exemple du résultat que je cherche:
    le nombre d'entré en Janvier 2021 est ...
    ..............................fevrier 2021 est ...
    .
    .
    .
    le nombre d'entré en Janvier 2022 est ...
    ..............................fevrier 2022 est ...
    .
    .
    .

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    8 995
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 8 995
    Points : 33 706
    Points
    33 706
    Billets dans le blog
    3
    Par défaut
    Comme ceci :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    set language french
    ;
    select year  (date_sortie) as CCAA
         , month (date_sortie) as MM
         , datename(month, convert(datetime, date_sortie, 103))
         , count(*) as Nbr
    from CONTRAT
    where year(date_sortie) between 2021 and 2022
    group by year (date_sortie)
           , month (date_sortie)
           , datename(month, convert(datetime, date_sortie, 103))
    order by year (date_sortie)
           , month (date_sortie)    
    ;


    Par contre
    Citation Envoyé par mrt59 Voir le message
    exemple du résultat que je cherche:
    le nombre d'entré en Janvier 2021 est ...
    ..............................fevrier 2021 est ...
    Etrange d'afficher un message "nombre d'entrées" alors que la table comporte des dates de sorties...

Discussions similaires

  1. [XL-2010] Do while Loop
    Par gigalia dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/06/2011, 11h39
  2. continue; et incrementation dans une while loop !
    Par el_bacha dans le forum Langage
    Réponses: 2
    Dernier message: 02/05/2011, 02h23
  3. [XL-2007] Structure Do While loop
    Par carlux3 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/11/2010, 13h26
  4. boucle while loop trop lente et pennible
    Par jm_force dans le forum Access
    Réponses: 3
    Dernier message: 10/08/2006, 18h36
  5. Réponses: 13
    Dernier message: 20/03/2006, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo