Ajuda em Consulta

03/11/2004

0

estou usando a seguinte conculta para tentar agrupar um relatório com as somas pr mes de referncia:

SELECT numchamado,
SUM(CASE WHEN Month(dtref)=1 THEN 1 ELSE 0) AS Jan
SUM(CASE WHEN Month(dtref)=2 THEN 1 ELSE 0) AS Fev
SUM(CASE WHEN Month(dtref)=3 THEN 1 ELSE 0) AS Mar
SUM(CASE WHEN Month(dtref)=4 THEN 1 ELSE 0) AS Abr
SUM(CASE WHEN Month(dtref)=5 THEN 1 ELSE 0) AS Mai
SUM(CASE WHEN Month(dtref)=6 THEN 1 ELSE 0) AS Jun
SUM(CASE WHEN Month(dtref)=7 THEN 1 ELSE 0) AS Jul
SUM(CASE WHEN Month(dtref)=8 THEN 1 ELSE 0) AS Ago
SUM(CASE WHEN Month(dtref)=9 THEN 1 ELSE 0) AS Sete
SUM(CASE WHEN Month(dtref)=10 THEN 1 ELSE 0) AS Outu
SUM(CASE WHEN Month(dtref)=11 THEN 1 ELSE 0) AS Nov
SUM(CASE WHEN Month(dtref)=12 THEN 1 ELSE 0) AS Dez
FROM base
GROUP BY numchamado

Mas está dando o seguinte erro:
Server: Msg 170, Level 15, State 1, Line 2
Line 2: Incorrect syntax near ´)´.

O que pode estar errado ?

Andre Luis
andre@leitbom.com.br


Andre Silveira

Andre Silveira

Responder

Posts

03/11/2004

Robertolucio

Boa tarde Andre,

Tenta aí:

SELECT numchamado,
SUM(CASE WHEN Month(dtref)=1 THEN 1 ELSE 0 END) AS Jan,
SUM(CASE WHEN Month(dtref)=2 THEN 1 ELSE 0 END) AS Fev,
SUM(CASE WHEN Month(dtref)=3 THEN 1 ELSE 0 END) AS Mar,
SUM(CASE WHEN Month(dtref)=4 THEN 1 ELSE 0 END) AS Abr,
SUM(CASE WHEN Month(dtref)=5 THEN 1 ELSE 0 END) AS Mai,
SUM(CASE WHEN Month(dtref)=6 THEN 1 ELSE 0 END) AS Jun,
SUM(CASE WHEN Month(dtref)=7 THEN 1 ELSE 0 END) AS Jul,
SUM(CASE WHEN Month(dtref)=8 THEN 1 ELSE 0 END) AS Ago,
SUM(CASE WHEN Month(dtref)=9 THEN 1 ELSE 0 END) AS Sete,
SUM(CASE WHEN Month(dtref)=10 THEN 1 ELSE 0 END) AS Outu,
SUM(CASE WHEN Month(dtref)=11 THEN 1 ELSE 0 END) AS Nov,
SUM(CASE WHEN Month(dtref)=12 THEN 1 ELSE 0 END) AS Dez
FROM base
GROUP BY numchamado


Espero ter ajudado,

Att
Roberto


Responder

03/11/2004

Andre Silveira

Cara funcionou, mas estava errado.
O que eu realmente quero é o seguinte:
Quero que ele me dê as somas dos valores em cada mês, algo mais ou menos assim:
SELECT numchamado,
CASE WHEN Month(dtref)=1 THEN Sum(base.vlrbruto) ELSE 0 END) AS Jan,
CASE WHEN Month(dtref)=2 THEN Sum(base.vlrbruto) ELSE 0 END) AS Fev,
CASE WHEN Month(dtref)=3 THEN Sum(base.vlrbruto) ELSE 0 END) AS Mar,
CASE WHEN Month(dtref)=4 THEN Sum(base.vlrbruto) ELSE 0 END) AS Abr,
CASE WHEN Month(dtref)=5 THEN Sum(base.vlrbruto) ELSE 0 END) AS Mai,
CASE WHEN Month(dtref)=6 THEN Sum(base.vlrbruto) ELSE 0 END) AS Jun,
CASE WHEN Month(dtref)=7 THEN Sum(base.vlrbruto) ELSE 0 END) AS Jul,
CASE WHEN Month(dtref)=8 THEN Sum(base.vlrbruto) ELSE 0 END) AS Ago,
CASE WHEN Month(dtref)=9 THEN Sum(base.vlrbruto) ELSE 0 END) AS Sete,
CASE WHEN Month(dtref)=10 THEN Sum(base.vlrbruto) ELSE 0 END) AS Outu,
CASE WHEN Month(dtref)=11 THEN Sum(base.vlrbruto) ELSE 0 END) AS Nov,
CASE WHEN Month(dtref)=12 THEN Sum(base.vlrbruto) ELSE 0 END) AS Dez
FROM base
GROUP BY numchamado

Quero totalizar os valores dentro dos meses de referência de cada um e que ele me retorne os totais de cada numero chamado dentro de cada mês.

Num sei se consegui me expressar corretamente.

Andre Luis
andre@leitbom.com.br


Responder

03/11/2004

Robertolucio

Andre, se eu entendi é isso:
SELECT CASE WHEN Month(dtref)=1 THEN Sum(base.vlrbruto) ELSE 0 END AS Jan,
CASE WHEN Month(dtref)=2 THEN Sum(base.vlrbruto) ELSE 0 END AS Fev,
CASE WHEN Month(dtref)=3 THEN Sum(base.vlrbruto) ELSE 0 END AS Mar,
CASE WHEN Month(dtref)=4 THEN Sum(base.vlrbruto) ELSE 0 END AS Abr,
CASE WHEN Month(dtref)=5 THEN Sum(base.vlrbruto) ELSE 0 END AS Mai,
CASE WHEN Month(dtref)=6 THEN Sum(base.vlrbruto) ELSE 0 END AS Jun,
CASE WHEN Month(dtref)=7 THEN Sum(base.vlrbruto) ELSE 0 END AS Jul,
CASE WHEN Month(dtref)=8 THEN Sum(base.vlrbruto) ELSE 0 END AS Ago,
CASE WHEN Month(dtref)=9 THEN Sum(base.vlrbruto) ELSE 0 END AS Sete,
CASE WHEN Month(dtref)=10 THEN Sum(base.vlrbruto) ELSE 0 END AS Outu,
CASE WHEN Month(dtref)=11 THEN Sum(base.vlrbruto) ELSE 0 END AS Nov,
CASE WHEN Month(dtref)=12 THEN Sum(base.vlrbruto) ELSE 0 END AS Dez
FROM base
GROUP BY month(dtref)

Qualquer coisa, é só retornar

Att
Roberto


Responder

03/11/2004

Eduardo.padilha

Caro Andre Silveira.

Eu faria de uma forma mais simplificada.

SELECT MONTH(x.campo_data), SUM(x.campo_valor)
FROM Tabela X
WHERE (YEAR(x.campo_data) = 2004)
GROUP BY MONTH(x.campo_data)
ORDER BY MONTH(x.campo_data)

Obs. Retornara os meses do ano 2004 com suas respectivas somas para cada um deles, espero que ajude.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar