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

SQL Oracle Discussion :

SQL Dynamique clause FROM


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Database
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Database

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Par défaut SQL Dynamique clause FROM
    Bonjour tous le monde !

    Aujourd’hui j’aurai besoin de votre aide pour une question relative au SQL Dynamique.

    Mon problème est relativement basique : je dois créer des rapport tous les mois basé sur une table génèré toutes les fins de mois. Donc tous les mois le nom de ma table change.

    Nommage de la table suit la syntaxe suivante : compte_YYYYMMDD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select Compte_number, balance
    From compte_20200131
     
    Et pour le mois suivant ce sera :
     
    Select Compte_number, balance
    From compte_20200229
    Comment faire pour automatiser cette requête, que le nom de la table se génère tout seul ??

    Merci tout plein !

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Tout dépend comment sont générés ces rapports (Oracle Reports, plsql, batch sql, ...) ?

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Bonjour,

    Cela dépend ce que tu utilises pour faire les rapports. Par exemple en SQL*plus, tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SQL> column date_fin_du_mois new_value date_fin_du_mois
    SQL> select to_char(last_day(sysdate), 'yyyymmdd') date_fin_du_mois from dual;
     
    DATE_FIN_DU_MOIS
    ---------------------------------------------------------------------------
    20200229
     
    SQL> Select Compte_number, balance From compte_&date_fin_du_mois;

  4. #4
    Membre confirmé
    Femme Profil pro
    Database
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Database

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Par défaut
    Pour les rapports, j'utilise SQL Developer (v.4)

    J'ai créer une version en PL/SQL qui créer une table sur laquelle je peux ensuite requeter, mais je me demandais s'il n'y aurais pas une version plus simple.

    Mais je dois aussi créer des vues sur le meme principe pour exporter mes données vers un logiciel décisionnel....

    Merci

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    SQL Developer v4, ça date! On est à la version 19.2.1 maintenant, il faudrait peut-être que tu mettes à jour. Tu as la possibilité de faire ce genre de rapports dans SQL Developer.

    J'aurais bien fait des copies-écran mais je n'arrive plus à uploader des images sur ce site, la popup est toute grise et plus moyen d'appuyer sur un bouton pour confirmer.

    Donc, dans SQL Developer (19.2.1 pour moi), tu vas dans l'onglet "Reports" en bas à gauche, puis dans "User Defined Reports" tu cliques droit et tu fais "New Report".

    Dans la fenêtre qui s'ouvre tu choisis "Script" dans la liste "Style". Dans la fenêtre "SQL" en bas tu mets ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    set verify off
    set feedback off
    set termout off
    column date_fin_du_mois new_value date_fin_du_mois
    select to_char(last_day(sysdate), 'yyyymmdd') date_fin_du_mois from dual;
     
    set termout on
    Select Compte_number, balance From compte_&date_fin_du_mois;;
    Tu finis en cliquant sur "Apply". Maintenant quand tu ouvriras ton rapport il interrogera automatiquement ta table suffixée par la fin du mois. Bien sûr tu peux modifier pour changer le calcul de la date si besoin.

  6. #6
    Membre confirmé
    Femme Profil pro
    Database
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Database

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Par défaut
    Merci Vanagreg

    Cela fait un probleme de résolu!

    Tu as un conseil pour la création de la vue??

    PS: je vais suggérer a mon boss de passer sur un SQL Developer plus recent... faut bien avouer que leur actuel DBA n'a que le titre, il ne fait qu'exécuter des codes que lui envoie un autre DBA (confirmé celui-la!!). Il ne comprends pas une simple requete et c'est lui qui est censé me former

    C'est pourquoi tu me croises souvent par ici!!

  7. #7
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Pour les vues ce n'est pas possible, tu ne peux pas passer un nom de table dynamiquement à une vue. Si toutes tes tables existent déjà (rien ne t'empêche de créer les tables futures), tu peux faire un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create or replace view mavue(periode, compte_number, balance)
    as
    select '202001', compte_number, balance from compte_20200131
    union all
    select '202002', compte_number, balance from compte_20200229
    union all 
    ....
    Il te faut une notion de période pour pouvoir ensuite interroger la vue en fonction de la période:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from mavue
    where periode = '202002';

Discussions similaires

  1. variable dans la clause from en sql
    Par myriame dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/02/2012, 11h06
  2. Réponses: 1
    Dernier message: 15/04/2010, 08h10
  3. SQL dynamique et clause WITH
    Par romu92 dans le forum Développement
    Réponses: 3
    Dernier message: 21/10/2009, 12h05
  4. Requete SQL avec une clause FROM variable
    Par aCe_GiK dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 11/04/2006, 13h45
  5. SYBASE SELECT imbriqué clause FROM
    Par Nicolas Martel dans le forum Sybase
    Réponses: 2
    Dernier message: 19/11/2003, 15h28

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