none
Affichage des résultats RRS feed

  • Question

  • Bonjour le forum,

    Novice (voir profane) dans le maniement de M. SQL Entreprise Manager V 8.0 (je ne suis même pas certain d'être dans le bon forum ?) je me risque à poster ce message.

    Je souhaiterai - si cela est possible - changer l'affichage (l'orientation) des données retournées aprés une requête. J'ai une base avec références articles, tailles et quantité par taille. Lorsque j'interroge cette base les résultats sont retournés de la façon suivante (avec SQL Server Entreprise Manager) :


    REFA          TAILLEA           QTEA
    REFA          TAILLEB           QTEB
    REFA          TAILLEC           QTEC
    REFB          TAILLEA           QTEA
    REFB          TAILLEB           QTEB
    ETC ...

    Est il possible d'avoir :

    REFA      QTEA      QTEB      QTEC
    REFB      QTEA      QTEB

    Je saurais le faire en passant par un affichage HTML et un script PHP (encore que je suis plutôt habitué à MySQL), mais les données sont consultées dans des tableaux Excel (données / données externes / créer une requête / ...).

    Auriez vous la solution ou une piste pour m'aiguiller ?

    Merci pour votre aide.

    A+
    mardi 10 juin 2008 09:32

Toutes les réponses

  • Bonjour,

     

    Comme je vois que c'est votre première publication, je vous souhaite de très vite trouver une solution à votre problème et que vous apprécierez les forums MSDN France.

     

    Il faudrait utiliser PIVOT

    Pourriez-vous voir ce lien ?

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=166512&SiteID=1

     

    Je pense qu'il devrait vous donner un début de solution

     

    Je sais que sur le site MSDN us Transact SQL, vous devriez trouver plusieurs topics concernant ce sujet

    http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=85&SiteID=1

     

    Bonne journée

     

    mercredi 11 juin 2008 07:21

  • Merci Papy

    Effectivement j'ai trouvé cette fonction dans la rubrique aide de SQL Server Entreprise Manager que j'utilise de la façon suivante :


    SELECT     dbo.F_ARTICLE.AR_Ref,
    SUM(CASE dbo.F_ARTGAMME.EG_Enumere WHEN 38 THEN dbo.F_GAMSTOCK.GS_QteSto ELSE 0 END) AS '38',
    SUM(CASE dbo.F_ARTGAMME.EG_Enumere WHEN 40 THEN dbo.F_GAMSTOCK.GS_QteSto ELSE 0 END) AS '40',
    SUM(CASE dbo.F_ARTGAMME.EG_Enumere WHEN 42 THEN dbo.F_GAMSTOCK.GS_QteSto ELSE 0 END) AS '42',
    SUM(CASE dbo.F_ARTGAMME.EG_Enumere WHEN 44 THEN dbo.F_GAMSTOCK.GS_QteSto ELSE 0 END) AS '44',
    SUM(CASE dbo.F_ARTGAMME.EG_Enumere WHEN 46 THEN dbo.F_GAMSTOCK.GS_QteSto ELSE 0 END) AS '46',
    SUM(CASE dbo.F_ARTGAMME.EG_Enumere WHEN 48 THEN dbo.F_GAMSTOCK.GS_QteSto ELSE 0 END) AS '48'
    FROM         dbo.F_ARTICLE INNER JOIN
                          dbo.F_GAMSTOCK ON dbo.F_ARTICLE.AR_Ref = dbo.F_GAMSTOCK.AR_Ref INNER JOIN
                          dbo.F_ARTGAMME ON dbo.F_GAMSTOCK.AG_No1 = dbo.F_ARTGAMME.AG_No
    WHERE     (dbo.F_ARTICLE.AR_Gamme1 = 3)
    GROUP BY dbo.F_ARTICLE.AR_Ref

    Par contre maintnenant il faut que je trouve comment effectuer des tests conditionnels pour pouvoir afficher, selon la gamme choisit, les énumérés à afficher.

    Par ex .
    Si dbo.F_ARTICLE.AR_Gamme1 = 3 ALORS SUM(....WHEN 38 ...) jusqu'à 48
    Si dbo.F_ARTICLE.AR_Gamme1 = 2 ALORS SUM(....WHEN 18 ...) jusqu'à 38
    etc ...

    Là ca va être coton je pense ... encore une fois si qqun peut me mettre sur une piste. J'ai l'habitude de MySQL à travers des scripts PHP, mais des scripts SQL c'est pas encore mon truc.

    Merci d'avance.



    jeudi 12 juin 2008 08:14
  • Bonjour,

     

    Désolé, mais votre question va au delà de mes compétences en Transact-SQL.

    Je ne suis qu'un tout petit answerer qui s'est spécialisé dans Sql Server Express et SMO/DMO.

    J'avais vu il y a plusieurs toute une série de questions similaires avec comme réponse PIVOT.

    J'avais regardé les réponses puisque je savais que PIVOT était une nouveauté de Sql Server 2005.

    C'est pour celà que je vous ai donné cette piste

     

    En tout cas, bonne chance pour votre série de tests.

    J'espère que vous posterez votre solution car elle interessera plus d'une persoone

     

    Bonne journée

     

    jeudi 12 juin 2008 08:42