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 :

SQl Server - Vue Union de tables avec noms dynamiques.


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut SQl Server - Vue Union de tables avec noms dynamiques.
    Bonjour à tous,

    Tout d'abord je vous souhaites mes meilleurs voeux.

    J'ai un souci que je ne parviens pas à résoudre seul. J'aurais donc besoin de votre expertise. Je m'explique :

    J'ai plusieurs table identique pour des périodes temporaire différentes.

    Par exemple :

    Table0_Decembre2022, Table1_janvier2023 ,... Ces tables (d'archive) sont créés chaque mois par le système donc aujourd'hui la table pour février n'existe pas encore. (dans la table du mois en cours les données de la veille sont ajoutées chaque nuit par me système également)

    Je souhaiterais créer une vue dynamique pour rassembler ses différentes tables sans avoir a hardcodé les UNION chaque mois.

    (Je ne peux pas créé de procédure stockée sur le serveur ni lancer de job).

    Des idées ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 694
    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 : 10 694
    Billets dans le blog
    10
    Par défaut
    Sous réserve que toutes les tables concernées possèdent un préfixe ou un suffixe de nom discriminant, on peut en retrouver la liste dans le catalogue en consultant la table SYS.TABLES.

    Mais, la bonne solution est de ne pas dupliquer les tables en fonction de la période du contenu, ça c'est exactement ce qu'il ne faut pas faire ! Si le volume est important, on peut partitionner la table sur la ou les colonne(s) identifiant la période.

  3. #3
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour escartefigue,

    Merci pour le retour.

    "la bonne solution est de ne pas dupliquer les tables en fonction de la période du contenu" : Je suis d'accord avec vous.
    Ces tables sont des archives fournies par le fournisseur de l'applicatif , depuis le passage sur leur Cloud , nous n'avons plus accès à "la table global" mais uniquement à des archives mensuelles que je cherche à grouper.

    Je parviens à en récupérer la liste dans une vue ListTable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ROW_NUMBER() OVER (ORDER BY [name]) AS id, name
    FROM     sys.views
    WHERE  (name LIKE '%Table_2022%')
    Ce que je souhaiterais c'est créer une "vue" qui me ferait l'union de des différentes table listée ci-dessus en une seule de telle manière que je ne doive pas ajouter le X union à la main et revenir dans la requête chaque mois.

    Bàv,

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 694
    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 : 10 694
    Billets dans le blog
    10
    Par défaut
    Le fournisseur ne peut il pas faire lui-même une consolidation annuelle plutôt que mensuelle, auquel cas plus besoin d'union variabilisée.

    Sinon c'est un peu l'usine à gaz : il faut faire du SQL dynamique basé sur une curseur qui récupère les n tables concernées dont on aura récupéré le nom exact par consultation de la sys.tables.

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 177
    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 177
    Par défaut
    Avec Oracle l'introduction des macros SQL pourrait répondre à ce besoin. Je ne sais pas s'il existe un équivalent dans SQL Server. Je suppose que oui puisque je lis souvent ici que SQL Server est techniquement plus avancé qu'Oracle.

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/07/2014, 18h09
  2. Problème de vue SQL Server dépendant d'une table Oracle
    Par bibouilles dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/09/2012, 15h46
  3. SQL SERVER 2008 R express : connexion avec le nom complet
    Par Satanas_et_diabolo dans le forum Administration
    Réponses: 1
    Dernier message: 10/09/2012, 17h27
  4. [syntaxe]Creation table avec nom dynamique
    Par ZuZu dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 23/09/2004, 19h01
  5. [SQL Server 2k] Droits utilisateurs + tables système
    Par guignol dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/07/2004, 10h12

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