Welcome to Sign in | Help

Re: Agregare diferita pe diverse dimensiuni

  •  03-19-2009, 9:23 AM

    Re: Agregare diferita pe diverse dimensiuni

    Serj K:

    Am cautat fara succes in tot felul de surse, dar nu am gasit cum pot face ca o anumita valoare sa se agrege diferit pe unele dimensiuni.

    Exemplu concret:
    -avem un tabel cu structura

    Pe linii - Produs (dimensiune)
    Pe coloane - Client (dimensiune)
    Masura - Valoare

    Structura care ar trebui sa o obtin din cub:

    Produs               Ceapa              Cartofi               Mere           TOTAL

    Clienti                
    Marius                 10                       20                  30               60
    Gogu                   20                       10                   0                30               
    Gigel                     5                          7                    6                  6  
    TOTAL                 11,66                  12,3                12               32         

    Deci pe linie - agregarea e suma, dar pe coloane - agregarea e medie.

    Nu cred ca poti rezolva problema doar in MDX sau/şi din server-ul Analysis Services.
    Soluţia ar fi să apelezi interogarea MDX din T-SQL sau rezultatele generate din interogarea MDX să le duci într-un generator de rapoarte ...

    În cazul tău, poţi încerca să adaptezi această soluţie care pentru mine a funcţionat:
    sp_configure 'show advanced options' , 1
    RECONFIGURE
    GO
    sp_configure 'ad hoc distributed queries' , 1
    RECONFIGURE
    GO

    SELECT 1 AS Aux, CAST("[Produs].[Produs].[Grupa].[MEMBER_CAPTION]" AS VARCHAR(255)) AS Produs,
    CAST(ISNULL("[Timp].[Calendar].[An].&[2005]",0) AS MONEY) AS Vanzari2005,
    CAST(ISNULL("[Timp].[Calendar].[An].&[2006]",0) AS MONEY) AS Vanzari2006,
    CAST(ISNULL("[Timp].[Calendar].[An].&[2007]",0) AS MONEY) AS Vanzari2007
    FROM OPENROWSET
    ('MSOLAP',
    'DATASOURCE=localhost;Initial Catalog=BazaDeDateAS;',
    'SELECT {[Produs].[Produs].[Grupa]} ON ROWS,{[Timp].[Calendar].[An]} ON COLUMNS FROM CubVanzari WHERE Valoare') AS Cub

    UNION ALL
    SELECT 2 AS Aux, 'Total' AS Total, AVG(Vanzari2005) AS Medie2005, AVG(Vanzari2006) AS Medie2006, AVG(Vanzari2007) AS
    FROM
    (
    SELECT CAST("[Produs].[Produs].[Grupa].[MEMBER_CAPTION]" AS VARCHAR(255)) AS Produs,
    CAST(ISNULL("[Timp].[Calendar].[An].&[2005]",0) AS MONEY) AS Vanzari2005,
    CAST(ISNULL("[Timp].[Calendar].[An].&[2006]",0) AS MONEY) AS Vanzari2006,
    CAST(ISNULL("[Timp].[Calendar].[An].&[2007]",0) AS MONEY) AS Vanzari2007
    FROM OPENROWSET
    ('MSOLAP',
    'DATASOURCE=localhost;Initial Catalog=BazaDeDateAS;',
    'SELECT {[Produs].[Produs].[Grupa]} ON ROWS,{[Timp].[Calendar].[An]} ON COLUMNS FROM CubVanzari WHERE Valoare') AS Cub
    ) AS TsqlQuery
    Medie2007
    ORDER BY Aux

    EXEC sp_configure 'ad hoc distributed queries' , 0
    RECONFIGURE
    GO

    sp_configure 'show advanced options' , 0
    RECONFIGURE
    GO

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems