none
FILTRAR OS 10 MAIORES CONSUMIDORES DE CADA MÊS EM UMA CONSULTA ENTRE DUAS DATAS RRS feed

  • Pergunta

  • Boa Tarde,

    Estou tendo dificuldade para filtrar os 10 maiores consumidores (clientes) de cada mês do ano, sendo que a consulta é feita comparando os últimos 3 anos mês a mês. Não funciona o TOP, pois preciso verificar os 10 maiores valores de cada mês (considerando o ano de 2015).


    Exemplo:

    CLIENTES MÊS 2014 R$ 2015 R$ 2016 R$
    CLIENTE 1 Janeiro      45.000,00    41.662,43    39.890,00
    CLENTE 2 Janeiro      44.880,00    40.512,43    38.940,00
    CLIENTE 5 Janeiro      44.760,00    39.362,43    37.990,00
    CLIENTE 9 Janeiro      44.640,00    38.212,43    37.040,00
    CLIENTE 11 Janeiro      44.520,00    37.062,43    36.090,00
    CLIENTE 25 Janeiro      44.400,00    35.912,43    35.140,00
    CLIENTE 32 Janeiro      44.280,00    34.762,43    34.190,00
    CLIENTE 12 Janeiro      44.160,00    33.612,43    33.240,00
    CLIENTE 14 Janeiro      44.040,00    32.462,43    32.290,00
    CLIENTE 16 Janeiro      43.920,00    31.312,43    31.340,00
    CLIENTE 17 Janeiro      43.800,00    30.162,43    30.390,00
    CLIENTE 20 Janeiro      43.680,00    29.012,43    29.440,00
    CLIENTE 21 Janeiro      43.560,00    27.862,43    28.490,00
    CLIENTE 22 Janeiro      43.440,00    26.712,43    27.540,00
    CLIENTE 33 Janeiro      43.320,00    25.562,43    26.590,00
    CLIENTE 14 Fevereiro      43.000,00    44.500,00    45.900,00
    CLIENTE 16 Fevereiro      41.900,00    43.410,00    44.970,00
    CLIENTE 17 Fevereiro      40.800,00    42.320,00    44.040,00
    CLIENTE 20 Fevereiro      39.700,00    41.230,00    43.110,00
    CLIENTE 21 Fevereiro      38.600,00    40.140,00    42.180,00
    CLIENTE 22 Fevereiro      37.500,00    39.050,00    41.250,00
    CLIENTE 1 Fevereiro      36.400,00    37.960,00    40.320,00
    CLENTE 2 Fevereiro      35.300,00    36.870,00    39.390,00
    CLIENTE 5 Fevereiro      34.200,00    35.780,00    38.460,00
    CLIENTE 9 Fevereiro      33.100,00    34.690,00    37.530,00
    CLIENTE 11 Fevereiro      32.000,00    33.600,00    36.600,00
    CLIENTE 25 Fevereiro      30.900,00    32.510,00    35.670,00
    CLIENTE 32 Fevereiro      29.800,00    31.420,00    34.740,00
    CLIENTE 12 Fevereiro      28.700,00    30.330,00    33.810,00
    CLIENTE 18 Fevereiro      27.600,00    29.240,00    32.880,00
    CLIENTE 1 Março      41.200,00    44.300,00    42.320,00
    CLENTE 2 Março      40.100,00    43.150,00    41.120,00
    CLIENTE 5 Março      39.000,00    42.000,00    39.920,00
    CLIENTE 9 Março      37.900,00    40.850,00    38.720,00
    CLIENTE 11 Março      36.800,00    39.700,00    37.520,00
    CLIENTE 25 Março      35.700,00    38.550,00    36.320,00
    CLIENTE 32 Março      34.600,00    37.400,00    35.120,00
    CLIENTE 12 Março      33.500,00    36.250,00    33.920,00
    CLIENTE 14 Março      32.400,00    35.100,00    32.720,00
    CLIENTE 16 Março      31.300,00    33.950,00    31.520,00
    CLIENTE 17 Março      30.200,00    32.800,00    30.320,00
    CLIENTE 20 Março      29.100,00    31.650,00    29.120,00
    CLIENTE 21 Março      28.000,00    30.500,00    27.920,00
    CLIENTE 22 Março      26.900,00    29.350,00    26.720,00
    CLIENTE 33 Março      25.800,00    28.200,00    25.520,00

    O script que estou usando é este:

    SET LANGUAGE Português
    SELECT A1.A1_NOME,
    CASE DATEPART(MONTH, F2.F2_EMISSAO)
             WHEN 1 THEN 'Janeiro'
             WHEN 2 THEN 'Fevereiro'
             WHEN 3 THEN 'Março'
             WHEN 4 THEN 'Abril'
             WHEN 5 THEN 'Maio'
             WHEN 6 THEN 'Junho'
             WHEN 7 THEN 'Julho'
             WHEN 8 THEN 'Agosto'
             WHEN 9 THEN 'Setembro'
             WHEN 10 THEN 'Outubro'
             WHEN 11 THEN 'Novembro'
             WHEN 12 THEN 'Dezembro'
           END AS MES,

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO)  = '2014' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL  END)
    END) AS [2014_R$],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2015' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL END)
    END) AS [2015_R$],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2016' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL END)
    END) AS [2016_R$]

    FROM SF2010 F2, SD2010 D2, SA1010 A1, SA3010 A3

    WHERE

    F2.F2_EMISSAO >= '20140101' AND F2.F2_EMISSAO <= '20161231'
    AND D2.D2_DOC = F2.F2_DOC
    AND F2.F2_TIPO = 'N'
    AND D2.D2_CLIENTE = F2.F2_CLIENTE
    AND A1.A1_COD = F2.F2_CLIENTE
    AND D2.D_E_L_E_T_ <> '*'
    AND F2.D_E_L_E_T_ <> '*'
    AND F2.F2_VEND1 = A3.A3_COD
    AND F2.F2_VEND1 = ('000002')
    GROUP BY A1.A1_NOME, MONTH(F2.F2_EMISSAO)
    ORDER BY MONTH(F2.F2_EMISSAO),[2015_R$] DESC

    Alguém pode ajudar?



    • Editado Rachid - TI terça-feira, 26 de abril de 2016 20:38
    terça-feira, 26 de abril de 2016 20:15

Respostas

  • Bom Dia,

    Obrigado pela ajuda de todos! Resolvi o problema da seguinte forma:

    with RANKING
    AS
    (SELECT A1.A1_NOME AS CLIENTES,
    CASE DATEPART(MONTH, F2.F2_EMISSAO)
             WHEN 1 THEN 'Janeiro'
             WHEN 2 THEN 'Fevereiro'
             WHEN 3 THEN 'Março'
             WHEN 4 THEN 'Abril'
             WHEN 5 THEN 'Maio'
             WHEN 6 THEN 'Junho'
             WHEN 7 THEN 'Julho'
             WHEN 8 THEN 'Agosto'
             WHEN 9 THEN 'Setembro'
             WHEN 10 THEN 'Outubro'
             WHEN 11 THEN 'Novembro'
             WHEN 12 THEN 'Dezembro'
           END AS MES,

    DATEPART(MONTH, F2.F2_EMISSAO) AS [DIA_MES],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO)  = '2014' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL  END)
    END) AS [2014],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2015' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL END)
    END) AS [2015],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2016' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL END)
    END) AS [2016]

    FROM SF2010 F2, SD2010 D2, SA1010 A1, SA3010 A3

    WHERE

    F2.F2_EMISSAO >= '20140101' AND F2.F2_EMISSAO <= '20161231'
    AND D2.D2_DOC = F2.F2_DOC
    AND F2.F2_TIPO = 'N'
    AND D2.D2_CLIENTE = F2.F2_CLIENTE
    AND A1.A1_COD = F2.F2_CLIENTE
    AND D2.D_E_L_E_T_ <> '*'
    AND F2.D_E_L_E_T_ <> '*'
    AND F2.F2_VEND1 = A3.A3_COD
    AND F2.F2_VEND1 = ('000002')
    GROUP BY A1.A1_NOME, MONTH(F2.F2_EMISSAO)

    )

    SELECT CLIENTES, MES,[2014], [2015], [2016] FROM (
    SELECT CLIENTES, MES, [2014], [2015], [2016], (ROW_NUMBER() OVER (PARTITION BY DIA_MES ORDER BY DIA_MES, [2015] DESC)) AS CONT FROM RANKING
    ) AS Q WHERE CONT <= 10

    • Marcado como Resposta Rachid - TI quinta-feira, 28 de abril de 2016 14:50
    quinta-feira, 28 de abril de 2016 14:23

Todas as Respostas

  • Rachid - TI boa tarde,

    Uma opção é usar o recurso de Partition. Segue um exemplo. ( Lembrando que você precisará identificar se a performance não ficará prejudicada).

    SELECT * FROM (
    SELECT ROW_NUMBER() OVER (PARTITION BY MES ORDER BY VALOR_2015 desc) ranking,*
    FROM sua_tabela ) tab_temp
    WHERE ranking <= 10

    Dessa forma você está classificando dentro de um sub-grupo (mês) os valores e coletando os N primeiros.

    Att.


    Guilherme Silva Cardoso

    terça-feira, 26 de abril de 2016 20:40
  • Boa tarde Rachid,

    Não cheguei a testar, mas verifique se resolve seu problema.

    SELECT CLIENTES, MES, [2014], [2015], [2016] FROM (
    SELECT CLIENTES, MES, [2014], [2015], [2016], (ROW_NUMBER() OVER (PARTITION BY MES ORDER BY [2015] DESC)) AS CONT FROM TABELA
    ) AS Q WHERE CONT <= 10



    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski


    terça-feira, 26 de abril de 2016 20:40
  • Boa noite Rachid,

    Você também utiliza Protheus?

    Tente dessa forma:

    SELECT * FROM (
    SELECT *, (ROW_NUMBER() OVER (PARTITION BY MES ORDER BY [2015_R$] DESC)) AS CONT FROM (
    SELECT A1.A1_NOME,
    CASE DATEPART(MONTH, F2.F2_EMISSAO)
             WHEN 1 THEN 'Janeiro'
             WHEN 2 THEN 'Fevereiro'
             WHEN 3 THEN 'Março'
             WHEN 4 THEN 'Abril'
             WHEN 5 THEN 'Maio'
             WHEN 6 THEN 'Junho'
             WHEN 7 THEN 'Julho'
             WHEN 8 THEN 'Agosto'
             WHEN 9 THEN 'Setembro'
             WHEN 10 THEN 'Outubro'
             WHEN 11 THEN 'Novembro'
             WHEN 12 THEN 'Dezembro'
           END AS MES,
    
    SUM(CASE WHEN YEAR(F2.F2_EMISSAO)  = '2014' THEN 
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0' 
    THEN D2.D2_TOTAL  END) 
    END) AS [2014_R$], 
    
    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2015' THEN 
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0' 
    THEN D2.D2_TOTAL END)
    END) AS [2015_R$], 
    
    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2016' THEN 
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0' 
    THEN D2.D2_TOTAL END)
    END) AS [2016_R$]
    
    FROM SF2010 F2, SD2010 D2, SA1010 A1, SA3010 A3
    
    WHERE 
    
    F2.F2_EMISSAO >= '20140101' AND F2.F2_EMISSAO <= '20161231'
    AND D2.D2_DOC = F2.F2_DOC
    AND F2.F2_TIPO = 'N'
    AND D2.D2_CLIENTE = F2.F2_CLIENTE
    AND A1.A1_COD = F2.F2_CLIENTE
    AND D2.D_E_L_E_T_ <> '*'
    AND F2.D_E_L_E_T_ <> '*'
    AND F2.F2_VEND1 = A3.A3_COD
    AND F2.F2_VEND1 = ('000002')
    GROUP BY A1.A1_NOME, MONTH(F2.F2_EMISSAO)
    ORDER BY MONTH(F2.F2_EMISSAO),[2015_R$] DESC) AS Q) AS Q1 WHERE CONT <= 10

    Não cheguei a testar.

    Abraço!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    terça-feira, 26 de abril de 2016 20:50
  • Bom Dia Kanaãm,

    Utilizo Protheus sim, obrigado pela dica, o script não funcionou.  Msg 1033 - The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.

    quarta-feira, 27 de abril de 2016 11:03
  • Bom Dia Guilherme,

     Alterei o script desta forma:

    SELECT ROW_NUMBER() OVER (PARTITION BY MES ORDER BY 2015 desc) ranking,* FROM (SELECT A1.A1_NOME,
    CASE DATEPART(MONTH, F2.F2_EMISSAO)
             WHEN 1 THEN 'Janeiro'
             WHEN 2 THEN 'Fevereiro'
             WHEN 3 THEN 'Março'
             WHEN 4 THEN 'Abril'
             WHEN 5 THEN 'Maio'
             WHEN 6 THEN 'Junho'
             WHEN 7 THEN 'Julho'
             WHEN 8 THEN 'Agosto'
             WHEN 9 THEN 'Setembro'
             WHEN 10 THEN 'Outubro'
             WHEN 11 THEN 'Novembro'
             WHEN 12 THEN 'Dezembro'
           END AS MES,

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO)  = '2014' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL  END)
    END) AS [2014],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2015' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL END)
    END) AS [2015],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2016' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL END)
    END) AS [2016]
    FROM SF2010 F2, SD2010 D2, SA1010 A1, SA3010 A3
    WHERE
    F2.F2_EMISSAO >= '20140101' AND F2.F2_EMISSAO <= '20161231'
    AND D2.D2_DOC = F2.F2_DOC
    AND F2.F2_TIPO = 'N'
    AND D2.D2_CLIENTE = F2.F2_CLIENTE
    AND A1.A1_COD = F2.F2_CLIENTE
    AND D2.D_E_L_E_T_ <> '*'
    AND F2.D_E_L_E_T_ <> '*'
    AND F2.F2_VEND1 = A3.A3_COD
    AND F2.F2_VEND1 = ('000002')
    GROUP BY A1.A1_NOME, MONTH(F2.F2_EMISSAO)

    )

    tab_temp
    WHERE [ranking] <= 10

    Porém ocorre erro msg 207 - Invalid column name 'ranking'.

    Como posso corrigir?

    quarta-feira, 27 de abril de 2016 14:55
  • Rachid boa tarde,

    Você colocou o "ROW_NUMBER() OVER (PARTITION BY MES ORDER BY 2015 desc) ranking" fora da sub-select, coloca ela dentro para poder reconhecer no where.

    Mais ou menos assim...

    SELECT * FROM (SELECT ROW_NUMBER() OVER (PARTITION BY MES ORDER BY 2015 desc) ranking, A1.A1_NOME,
    CASE DATEPART(MONTH, F2.F2_EMISSAO) ....

    Att.


    Guilherme Silva Cardoso

    quarta-feira, 27 de abril de 2016 17:24
  • SELECT * FROM (SELECT ROW_NUMBER() OVER (PARTITION BY MONTH(F2.F2_EMISSAO) ORDER BY MONTH(F2.F2_EMISSAO), [2015] DESC) ranking,A1.A1_NOME,
    CASE DATEPART(MONTH, F2.F2_EMISSAO)
             WHEN 1 THEN 'Janeiro'
             WHEN 2 THEN 'Fevereiro'
             WHEN 3 THEN 'Março'
             WHEN 4 THEN 'Abril'
             WHEN 5 THEN 'Maio'
             WHEN 6 THEN 'Junho'
             WHEN 7 THEN 'Julho'
             WHEN 8 THEN 'Agosto'
             WHEN 9 THEN 'Setembro'
             WHEN 10 THEN 'Outubro'
             WHEN 11 THEN 'Novembro'
             WHEN 12 THEN 'Dezembro'
           END AS MES,

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO)  = '2014' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL  END)
    END) AS [2014],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2015' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL END)
    END) AS [2015],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2016' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL END)
    END) AS [2016]
    FROM SF2010 F2, SD2010 D2, SA1010 A1, SA3010 A3
    WHERE
    F2.F2_EMISSAO >= '20140101' AND F2.F2_EMISSAO <= '20161231'
    AND D2.D2_DOC = F2.F2_DOC
    AND F2.F2_TIPO = 'N'
    AND D2.D2_CLIENTE = F2.F2_CLIENTE
    AND A1.A1_COD = F2.F2_CLIENTE
    AND D2.D_E_L_E_T_ <> '*'
    AND F2.D_E_L_E_T_ <> '*'
    AND F2.F2_VEND1 = A3.A3_COD
    AND F2.F2_VEND1 = ('000002')
    GROUP BY A1.A1_NOME, MONTH(F2.F2_EMISSAO)
    ORDER BY MONTH(F2.F2_EMISSAO),[2015] DESC
    )

    tab_temp
    WHERE [ranking] <= 10

    Coloquei assim, mas agora gera erro Msg 1033 - The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.

    quarta-feira, 27 de abril de 2016 20:54
  • SELECT * FROM (SELECT ROW_NUMBER() OVER (PARTITION BY MONTH(F2.F2_EMISSAO) ORDER BY MONTH(F2.F2_EMISSAO), [2015] DESC) ranking,A1.A1_NOME,
    CASE DATEPART(MONTH, F2.F2_EMISSAO)
             WHEN 1 THEN 'Janeiro'
             WHEN 2 THEN 'Fevereiro'
             WHEN 3 THEN 'Março'
             WHEN 4 THEN 'Abril'
             WHEN 5 THEN 'Maio'
             WHEN 6 THEN 'Junho'
             WHEN 7 THEN 'Julho'
             WHEN 8 THEN 'Agosto'
             WHEN 9 THEN 'Setembro'
             WHEN 10 THEN 'Outubro'
             WHEN 11 THEN 'Novembro'
             WHEN 12 THEN 'Dezembro'
           END AS MES,
    
    SUM(CASE WHEN YEAR(F2.F2_EMISSAO)  = '2014' THEN 
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0' 
    THEN D2.D2_TOTAL  END) 
    END) AS [2014], 
    
    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2015' THEN 
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0' 
    THEN D2.D2_TOTAL END)
    END) AS [2015], 
    
    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2016' THEN 
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0' 
    THEN D2.D2_TOTAL END)
    END) AS [2016]
    FROM SF2010 F2, SD2010 D2, SA1010 A1, SA3010 A3
    WHERE 
    F2.F2_EMISSAO >= '20140101' AND F2.F2_EMISSAO <= '20161231'
    AND D2.D2_DOC = F2.F2_DOC
    AND F2.F2_TIPO = 'N'
    AND D2.D2_CLIENTE = F2.F2_CLIENTE
    AND A1.A1_COD = F2.F2_CLIENTE
    AND D2.D_E_L_E_T_ <> '*'
    AND F2.D_E_L_E_T_ <> '*'
    AND F2.F2_VEND1 = A3.A3_COD
    AND F2.F2_VEND1 = ('000002')
    GROUP BY A1.A1_NOME, MONTH(F2.F2_EMISSAO)
    )
    
    tab_temp
    WHERE [ranking] <= 10


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    quinta-feira, 28 de abril de 2016 13:49
  • Bom Dia,

    Obrigado pela ajuda de todos! Resolvi o problema da seguinte forma:

    with RANKING
    AS
    (SELECT A1.A1_NOME AS CLIENTES,
    CASE DATEPART(MONTH, F2.F2_EMISSAO)
             WHEN 1 THEN 'Janeiro'
             WHEN 2 THEN 'Fevereiro'
             WHEN 3 THEN 'Março'
             WHEN 4 THEN 'Abril'
             WHEN 5 THEN 'Maio'
             WHEN 6 THEN 'Junho'
             WHEN 7 THEN 'Julho'
             WHEN 8 THEN 'Agosto'
             WHEN 9 THEN 'Setembro'
             WHEN 10 THEN 'Outubro'
             WHEN 11 THEN 'Novembro'
             WHEN 12 THEN 'Dezembro'
           END AS MES,

    DATEPART(MONTH, F2.F2_EMISSAO) AS [DIA_MES],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO)  = '2014' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL  END)
    END) AS [2014],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2015' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL END)
    END) AS [2015],

    SUM(CASE WHEN YEAR(F2.F2_EMISSAO) = '2016' THEN
    (CASE WHEN D2.D2_UM IN ('CX', 'CH')AND D2.D2_PESO > '0'
    THEN D2.D2_TOTAL END)
    END) AS [2016]

    FROM SF2010 F2, SD2010 D2, SA1010 A1, SA3010 A3

    WHERE

    F2.F2_EMISSAO >= '20140101' AND F2.F2_EMISSAO <= '20161231'
    AND D2.D2_DOC = F2.F2_DOC
    AND F2.F2_TIPO = 'N'
    AND D2.D2_CLIENTE = F2.F2_CLIENTE
    AND A1.A1_COD = F2.F2_CLIENTE
    AND D2.D_E_L_E_T_ <> '*'
    AND F2.D_E_L_E_T_ <> '*'
    AND F2.F2_VEND1 = A3.A3_COD
    AND F2.F2_VEND1 = ('000002')
    GROUP BY A1.A1_NOME, MONTH(F2.F2_EMISSAO)

    )

    SELECT CLIENTES, MES,[2014], [2015], [2016] FROM (
    SELECT CLIENTES, MES, [2014], [2015], [2016], (ROW_NUMBER() OVER (PARTITION BY DIA_MES ORDER BY DIA_MES, [2015] DESC)) AS CONT FROM RANKING
    ) AS Q WHERE CONT <= 10

    • Marcado como Resposta Rachid - TI quinta-feira, 28 de abril de 2016 14:50
    quinta-feira, 28 de abril de 2016 14:23