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

MS SQL Server Discussion :

fusionner requêtes sqlserver


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Par défaut fusionner requêtes sqlserver
    Bonjour!!
    J'ai une table MCOMPTA dont le script est le suivant:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    --Table MCOMPTA
     
    CREATE TABLE [dbo].[MCOMPTA](
    	[NUMENREG] [numeric](30, 0) NOT NULL,
    	[JL] [nvarchar](10) NULL,
    	[SITE] [nvarchar](2) NOT NULL,
    	[NORD] [nvarchar](14) NULL,
    	[DATCLE] [datetime] NOT NULL,
    	[DATPIECE] [datetime] NULL,
    	[NOPIECE] [nvarchar](10) NULL,
    	[LIBELLE] [nvarchar](50) NULL,
    	[COGE] [nvarchar](10) NOT NULL,
    	[AUXI] [nvarchar](12) NULL,
    	[COGEAUXI] [nvarchar](25) NULL,
    	[CP] [nvarchar](10) NULL,
    	[CPAUXI] [nvarchar](12) NULL,
    	[POSTE] [nvarchar](10) NULL,
    	[CONVENTION] [nvarchar](2) NULL,
    	[CATEGORIE] [nvarchar](3) NULL,
    	[SOUSCATEGORIE] [nvarchar](3) NULL,
    	[ACTI] [nvarchar](10) NULL,
    	[GEO] [nvarchar](10) NULL,
    	[PLAN6] [nvarchar](15) NULL,
    	[S] [nvarchar](1) NULL,
    	[MONTANT] [numeric](30, 6) NULL,
    	[MONTDEV] [numeric](30, 6) NULL,
    	[MTREPORT] [numeric](30, 6) NULL,
    	[NLET] [numeric](10, 0) NULL,
    	[FACT] [nvarchar](1) NULL,
    	[DRAPEAU] [nvarchar](1) NULL,
    	[DEVISE] [nvarchar](3) NULL,
    	[COMPTA] [nvarchar](2) NULL,
    	[MARCHE] [nvarchar](25) NULL,
    	[NBORD] [numeric](30, 6) NULL,
    	[RELEVE] [numeric](10, 0) NULL,
    	[ANCIENDRF] [numeric](10, 0) NULL,
    	[NOUVDRF] [numeric](10, 0) NULL,
    	[MONTEMIS] [numeric](30, 6) NULL,
    	[ECHEANCE] [datetime] NULL,
    	[NPRELET] [numeric](10, 0) NULL,
    	[LIBELLEM] [nvarchar](50) NULL,
    	[BLNLOCAL] [bit] NOT NULL,
    	[QTE] [numeric](30, 6) NULL,
    	[CODEDP] [nvarchar](5) NULL,
    	[REGIE] [bit] NOT NULL,
    	[MODEREG] [nvarchar](1) NULL,
    	[SOURCE] [nvarchar](2) NULL,
    	[PU] [numeric](30, 6) NULL,
    	[UNITE] [nvarchar](10) NULL,
    	[DATECRE] [datetime] NULL,
    	[DATEMAJ] [datetime] NULL,
    	[USERCRE] [nvarchar](10) NULL,
    	[USERMAJ] [nvarchar](10) NULL,
    	[BL] [nvarchar](50) NULL,
    	[NATSOURCE] [nvarchar](1) NULL,
    	[COURSREP] [numeric](18, 6) NULL,
    	[COURSDEV] [numeric](18, 6) NULL,
     CONSTRAINT [PK_MCOMPTA_NUMENRENG] PRIMARY KEY CLUSTERED 
    (
    	[NUMENREG] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
    Et voici les contraintes :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    /****** Object:  ForeignKey [FK_MCOMPTA_RACTI1]    Script Date: 06/27/2012 23:43:34 ******/
    ALTER TABLE [dbo].[MCOMPTA]  WITH CHECK ADD  CONSTRAINT [FK_MCOMPTA_RACTI1] FOREIGN KEY([ACTI])
    REFERENCES [dbo].[RACTI1] (code)
    GO
    ALTER TABLE [dbo].[MCOMPTA] CHECK CONSTRAINT [FK_MCOMPTA_RACTI1]
    GO
    /****** Object:  ForeignKey [FK_MCOMPTA_RCOGE1]    Script Date: 06/27/2012 23:43:34 ******/
    ALTER TABLE [dbo].[MCOMPTA]  WITH CHECK ADD  CONSTRAINT [FK_MCOMPTA_RCOGE1] FOREIGN KEY([COGE])
    REFERENCES [dbo].[RCOGE1] (CODE)
    GO
    ALTER TABLE [dbo].[MCOMPTA] CHECK CONSTRAINT [FK_MCOMPTA_RCOGE1]
    GO
    /****** Object:  ForeignKey [FK_MCOMPTA_RGEO1]    Script Date: 06/27/2012 23:43:34 ******/
    ALTER TABLE [dbo].[MCOMPTA]  WITH CHECK ADD  CONSTRAINT [FK_MCOMPTA_RGEO1] FOREIGN KEY([GEO])
    REFERENCES [dbo].[RGEO1] (CODE)
    GO
    ALTER TABLE [dbo].[MCOMPTA] CHECK CONSTRAINT [FK_MCOMPTA_RGEO1]
    GO
    /****** Object:  ForeignKey [FK_MCOMPTA_RPOST1]    Script Date: 06/27/2012 23:43:34 ******/
    ALTER TABLE [dbo].[MCOMPTA]  WITH CHECK ADD  CONSTRAINT [FK_MCOMPTA_RPOST1] FOREIGN KEY([POSTE])
    REFERENCES [dbo].[RPOST1] (CODE)
    GO
    ALTER TABLE [dbo].[MCOMPTA] CHECK CONSTRAINT [FK_MCOMPTA_RPOST1]
    GO
    /****** Object:  ForeignKey [FK_MCOMPTA_RSITE]    Script Date: 06/27/2012 23:43:34 ******/
    ALTER TABLE [dbo].[MCOMPTA]  WITH CHECK ADD  CONSTRAINT [FK_MCOMPTA_RSITE] FOREIGN KEY([SITE])
    REFERENCES [dbo].[RSITE] (CODE)
     
    GO
    ALTER TABLE [dbo].[MCOMPTA] CHECK CONSTRAINT [FK_MCOMPTA_RSITE]
    GO
    et j'ai trois requêtes que je voulais fusionner si possible en utilisant case when

    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
    19
    -- MONTANT REGLEMENTS OU RECETTES 2009 POSTE
    SELECT SUM(MONTANT) AS MONTFACTURE
      FROM [FINPRONET].[dbo].[MCOMPTA]
      WHERE POSTE=212 AND SITE=1 AND DRAPEAU=2
     
     
     
    -- MONTANT FACTURE 2009 POSTE 111
    SELECT SUM(MONTANT) AS MONTFACTURE
      FROM [FINPRONET].[dbo].[MCOMPTA]
      WHERE POSTE=111 AND SITE=1 AND DRAPEAU=1
     
     
     -- MOUVEMENT
      SET DATEFORMAT DMY
    SELECT SUM(M.MONTANT) AS MONTANT 
    FROM MCOMPTA M INNER JOIN RCOGE1  F
    ON  M.COGE=F.CODE AND 
    WHERE M.COGE=52000100 and  M.S='D'AND F.DATECRE BETWEEN '01-01-2008' AND '31-12-2008'
    si une personne peut m'aider à fusionner les trois requêtes, ça sera super.
    Merci d'avance me chers ami.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    et j'ai trois requêtes que je voulais fusionner si possible en utilisant case when
    Décrivez plus explicitement ce sont vous avez besoin

    @++

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 002
    Billets dans le blog
    6
    Par défaut
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SET DATEFORMAT DMY;
    SELECT SUM(MONTANT) AS MONTFACTURE, 'MONTANT REGLEMENTS OU RECETTES 2009 POSTE' AS NATURE
    FROM   [FINPRONET].[dbo].[MCOMPTA]
    WHERE  POSTE=212 AND SITE=1 AND DRAPEAU=2
    UNION  ALL
    SELECT SUM(MONTANT) AS MONTFACTURE, 'MONTANT FACTURE 2009 POSTE 111'
    FROM   [FINPRONET].[dbo].[MCOMPTA]
    WHERE  POSTE=111 AND SITE=1 AND DRAPEAU=1
    UNION  ALL
    SELECT SUM(M.MONTANT) AS MONTANT, 'MOUVEMENT'
    FROM   MCOMPTA M 
           INNER JOIN RCOGE1  F
                 ON  M.COGE=F.CODE 
    WHERE M.COGE=52000100 AND  M.S='D'AND F.DATECRE BETWEEN '01-01-2008' AND '31-12-2008';
    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/ * * * * *

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Par défaut
    J'ai besoin de fusionner les trois requêtes ci_bas.
    lorsque vous les exécuter un à un, vous remarquez qu'elles donnent des résultats. Je les voulais en une seule requête mais avec les mêmes résultats.
    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
    19
    20
    21
     
     
    --MONTANT FACTURE
    SELECT MARCHE, 
          SUM(MONTANT)
     
      FROM [FINPRONET].[dbo].[MCOMPTA]
      WHERE  (YEAR(DATCLE)='2009')AND DRAPEAU=1  AND S='D'
      GROUP BY MARCHE
     
    --REALISATION GROUPEES
    SELECT     SUM(MONTANT) AS REALISATION
    FROM         MCOMPTA
    WHERE(DRAPEAU = 1)
    GROUP BY POSTE,YEAR(DATCLE),SITE
     
    --RECETTES GROUPES
    SELECT     SUM(MONTANT) AS RECETTE
    FROM         MCOMPTA
    WHERE(DRAPEAU = 1)
    GROUP BY POSTE,YEAR(DATCLE),SITE

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Dans ce cas, la solution que vous a donné SQLPro est celle qui convient.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,


    Décrivez plus explicitement ce sont vous avez besoin

    @++
    J'ai besoin de fusionner les trois requêtes ci_bas.
    lorsque vous les exécuter un à un, vous remarquez qu'elles donnent des résultats. Je les voulais en une seule requête mais avec les mêmes résultats.
    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
    19
    20
     
    --MONTANT FACTURE
    SELECT MARCHE, 
          SUM(MONTANT)
     
      FROM [FINPRONET].[dbo].[MCOMPTA]
      WHERE  (YEAR(DATCLE)='2009')and DRAPEAU=1  and S='D'
      GROUP BY MARCHE
     
    --REALISATION GROUPEES
    SELECT     SUM(MONTANT) AS REALISATION
    FROM         MCOMPTA
    WHERE(DRAPEAU = 1)
    group by POSTE,YEAR(DATCLE),SITE
     
    --RECETTES GROUPES
    SELECT     SUM(MONTANT) AS RECETTE
    FROM         MCOMPTA
    WHERE(DRAPEAU = 1)
    group by POSTE,YEAR(DATCLE),SITE

Discussions similaires

  1. [WD16] Problème requête SQLServer
    Par fweds dans le forum WinDev
    Réponses: 9
    Dernier message: 22/08/2012, 10h02
  2. Problème requête sqlserver
    Par ayouta.gfs dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/06/2011, 11h05
  3. fusionner requête SQL avec conditions différentes
    Par breizhlama dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/05/2011, 14h36
  4. Exécuter requête SQLServer avec Java
    Par MlleMeuh dans le forum Général Java
    Réponses: 9
    Dernier message: 13/07/2010, 11h30
  5. Réponses: 13
    Dernier message: 09/02/2009, 13h51

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