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

Développement SQL Server Discussion :

select Sum() avec nom de champs like '%string%'


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2013
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2013
    Messages : 65
    Par défaut select Sum() avec nom de champs like '%string%'
    Bonjour,

    Dans une base de données j'ai une table qui ressemble a :
    Nom : depenses.PNG
Affichages : 162
Taille : 9,6 Ko
    En gros pour chaque info il faut pouvoir saisir plus 'type' (ex : info = logistique, type = [prévu/DEVIS, prévu/CMD, Consommé/CMD, Restant/CMD) ==> ca correspond a 1 ligne en BdD
    /!\ Je sais que la bonne pratique aurait été de faire une table Type et de mettre les données dans la relation Info_Type mais je ne peux pas modifier la base de données comme je le souhaite/!\

    Je souhaite mettre en place une requête qui Sum() ses champs suivant le 'Type'. Les nom de champs respectent tous une syntaxe :
    - 'F_' et '_' : convention de nommage de l'appli donc obligatoire
    - 'TYPE' : type du champ
    - 'INFO' : information concernée

    J'ai fait cette query, qui fonctionne :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select
    	Sum(F_PREV_ST, F_PREV_LOGISTICS, F_PREV_MISSIONS, F_PREV_EMPLOYEE, F_PREV_MATERIAL, F_PREV_RISK, F_PREV_OTHER) as PREV,
    	Sum(F_PLAN_ST, F_PLAN_LOGISTICS, F_PLAN_MISSIONS, F_PLAN_EMPLOYEE, F_PLAN_MATERIAL, F_PLAN_RISK, F_PLAN_OTHER) as PLAN,
    	Sum(F_REAL_ST, F_REAL_LOGISTICS, F_REAL_MISSIONS, F_REAL_EMPLOYEE, F_REAL_MATERIAL, F_REAL_RISK, F_REAL_OTHER) as REAL,
    	Sum(F_REST_ST, F_REST_LOGISTICS, F_REST_MISSIONS, F_REST_EMPLOYEE, F_REST_MATERIAL, F_REST_RISK, F_REST_OTHER) as REST
    		from ACTI$SPENDING
    		group by K_ACTION

    Mais je souhaiterais faire une query que je n'ai pas a modifier si un type ou info est rajouté
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select
    	Sum("spending.* where field name like '%PREV%'") as PREV,
    	Sum("spending.* where field name like '%PLAN%'") as PLAN,
    	Sum("spending.* where field name like '%REAL%'") as REAL,
    	Sum("spending.* where field name like '%REST%'") as REST
    		from ACTI$SPENDING as spending
    		group by spending.K_ACTION

    Est-ce possible ou cela relève-t-il de l'utopie ?

    Merci a ceux qui prendrons au moins le temps de lire !

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    un calcul d'agrégat SUM ne s'applique qu'à un nombre...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre éclairé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 60
    Par défaut
    je passerais par du SQL dynamique

    genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DECLARE @Var_prev varchar(max)=''
     
    select @Var_prev+=COLUMN_NAME + '+' from information_schema.columns  where TABLE_NAME='ACTI$SPENDING' and COLUMN_NAME like 'PREV%'
     
    SET @var_prev = SUBSTRING(@var_prev, 1, LEN(@var_prev)-1)

Discussions similaires

  1. Variable curseur et nom de champs en string ? HLP
    Par AyaGizmo dans le forum SQL
    Réponses: 8
    Dernier message: 09/10/2007, 17h40
  2. Réponses: 1
    Dernier message: 11/09/2007, 11h12
  3. Requête avec nom de champ "variable"
    Par Pgs dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/07/2007, 11h25
  4. [Reporting Services] Un rapport avec nom de champs repetitif
    Par Nadaa dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/03/2007, 16h04
  5. Requete SQL avec NOM de champs et de table dynamique
    Par _stef_ffff_f34 dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/05/2006, 14h28

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