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

Autres SGBD Discussion :

[Teradata] Exemple de boucle


Sujet :

Autres SGBD

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Dataminer
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Dataminer
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [Teradata] Exemple de boucle
    Bonjour,

    J'aimerais alimenter une table avec une requête qui compterait des clients selon plusieurs critères par jour. Jusque là ça va je gère, sauf que j'aimerais me créer un historique sur les 3 mois précédents la date du jour et là je bloque.
    Je n'ai aucune envie de lancer ma requête 90 fois à la main sur chaque jour et je me dis qu'une boucle pourrait m'aider.
    Seulement je n'ai aucun exemple sur lequel m'appuyer, est ce que qqun aurait qqs exemples à me mettre pour que je m'en inspire ???

    Merci par avance,

    Bonne journée

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Pourquoi lancer 90 fois la même requête en changeant la date alors que Teradata met à ta disposition une vue Calendar avec laquelle tu pourrais faire une jointure sur ladite requête ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Dataminer
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Dataminer
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    parce que je suis une débutante sur teradata et que j'apprends toute seule comme je peux .... sniff

    A part faire des select ... left outer join ... qualify row .. bref le basique ...

    donc est ce que tu peux m'en dire plus sur la vue calendar stp .... Merci...

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Je n'ai malheureusementpas de Teradata à ma disposition pour le moment.
    De mémoire, il existe une vue nommé sys_calendar.calendar qui te propose un calendrier complet avec toutes les informations utiles pour chaque jour.
    A partir de là, il n'est plus très difficile d'écrire quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  *
    FROM    marequete   AS rqt
        INNER JOIN
            sys_calendar.calendar   AS cld
            ON  rqt.date_traitee    = cld.calendar_date
    WHERE   cld.calendar_dat BETWEEN ADD_MONTHS(CURRENT_DATE, -3) AND CURRENT_DATE
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Dataminer
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Dataminer
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci bcp, je vais essayer.

    Bonne journée

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Dataminer
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Dataminer
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bon au final, ce n'est pas ce dont j'avais besoin.
    Je fais des calculs avec la date du jour et une variable i qui évoluerait au fur et à mesure des jours i+1 ... bref je suis pas sûre d'être très clair : ça serait du style :
    Code : 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  
    (CURRENT_DATE-i) AS DATE_COMPTAGE,
    count (distinct(IDNT_COMP_SERV)) AS NB_CLIENTS
     
    FROM RA_PRD.RS_CCO_FD_CC_ACQUI_V_DET
    WHERE IDNT_COMP_SERV NOT IN
    (
    	SELECT IDNT_COMP_SERV
    	FROM RA_PRD.SO_CCO_FD_HIST_OFFR_COMP_SERV
    	WHERE IDNT_OFFR in (11505,12800,12799,12782)
    	AND DAT_HEUR_FIN_OFFR_CDS (date) >= (CURRENT_DATE-i-1)
    	AND DAT_HEUR_DEBT_OFFR_CDS (date) between CURRENT_DATE-i and CURRENT_DATE-i-1
    )
     
    AND DAT_ACQ_CDS (date) =(CURRENT_DATE -i)
    AND IDNT_OFFR_BSE_ACQ in (812,813,815,943,944,6242,6245,6248,6250,6254,6258,6262);
     
    i va varier de (i = 1 to 90)
    Je ne suis toujours pas sûre d'être clair, si c'est le cas tant pis ... j'essaierais soit à la main soit autrement ... Merci

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Et cela ne conviendrait pas ?
    Code : 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
    SELECT  cld.calendar_date AS date_comptage
        ,   COUNT (DISTINCT(val.idnt_comp_serv)) AS nb_clients
    FROM    ra_prd.rs_cco_fd_cc_acqui_v_det     AS  val
        RIGHT JOIN
            sys_calendar.calendar   AS cld
            ON  val.dat_acq_cds (DATE) = cld.calendar_date
    WHERE   cld.calendar_date BETWEEN CURRENT_DATE - 90 AND CURRENT_DATE
        AND val.idnt_comp_serv NOT IN
            (   SELECT  exc.idnt_comp_serv
                FROM    ra_prd.so_cco_fd_hist_offr_comp_serv    AS exc
                WHERE   exc.idnt_offr IN (11505, 12800, 12799, 12782)
                    AND exc.dat_heur_fin_offr_cds (DATE) >= (cld.calendar_date - 1)
                    AND exc.dat_heur_debt_offr_cds (DATE) BETWEEN cld.calendar_date - 1 AND cld.calendar_date
            )
        AND val.idnt_offr_bse_acq IN (812, 813, 815, 943, 944, 6242, 6245, 6248, 6250, 6254, 6258, 6262);
    GROUP BY date_comptage
    ORDER BY date_comptage DESC
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Dataminer
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Dataminer
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    ça a l'air de fonctionner. Vous êtes géniaux. Merci bcp.
    Je vais étudier le code pour l'assimiler et l'intégrer.

    En tout cas vraiment merci !!!!!!

    Bonne fin de journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/04/2015, 09h35
  2. Réponses: 2
    Dernier message: 03/10/2014, 11h33
  3. [XL-2003] Boucles (fichier exemple)
    Par Nonno 94 dans le forum Excel
    Réponses: 2
    Dernier message: 12/09/2012, 21h48
  4. imbrication de boucle (exemple :d'upload)
    Par new-dmx dans le forum Langage
    Réponses: 2
    Dernier message: 01/09/2008, 15h18

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