Usuário com melhor resposta
Quebrando Por grupo

Pergunta
-
Prezados bom dia, tenho a SQL abaixo que me retorna as informaçoea que preciso, porem eu gostaria que no final de casa grupo fosse feito a soma.
vejam
SQL
Select
FLAN.CODTB1FLX,
FTB1.DESCRICAO,
TotalAnoAnterior = Sum(Case When (Year(DataBaixa) = Year(GetDate()) - 1) Then IsNull(ValorBaixado, 0) End),
Janeiro = Sum(Case When (Month(DataBaixa) = 1) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
Fevereiro = Sum(Case When (Month(DataBaixa) = 2) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
Março = Sum(Case When (Month(DataBaixa) = 3) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
Abril = Sum(Case When (Month(DataBaixa) = 4) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
Maio = Sum(Case When (Month(DataBaixa) = 5) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
Junho = Sum(Case When (Month(DataBaixa) = 6) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
Julho = Sum(Case When (Month(DataBaixa) = 7) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
Agosto = Sum(Case When (Month(DataBaixa) = 8) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
Setembro = Sum(Case When (Month(DataBaixa) = 9) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
Outubro = Sum(Case When (Month(DataBaixa) = 10) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
Novembro = Sum(Case When (Month(DataBaixa) = 11) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
Dezembro = Sum(Case When (Month(DataBaixa) = 12) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),
TotalGeral = Sum(Case When (Year(DataBaixa) = Year(GetDate()) ) Then IsNull(ValorBaixado, 0) End)
FROM FLAN
INNER JOIN FTB1 ON FTB1.CODCOLIGADA = FLAN.CODCOLIGADA AND FTB1.CODTB1FLX = FLAN.CODTB1FLX
WHERE FLAN.CODCOLIGADA= '1'
GROUP BY FLAN.CODTB1FLX,FTB1.DESCRICAO
ORDER BY 1Resultado
1.01.030 Encargos Sociais - SENAI
1.01.031 Ginastica Laboral
1.02.001 Materiais Aplicados em Obras
1.02.002 Ferramentas Rapido Desgaste
1.02.003 Materiais p/Serviços Diversos
1.02.004 Materiais de construção - SPE
1.03.001 Serv Prestado Pessoa FisicaResultado esperado
1.01.030 Encargos Sociais - SENAI
1.01.031 Ginastica LaboralSoma
1.02.001 Materiais Aplicados em Obras
1.02.002 Ferramentas Rapido Desgaste
1.02.003 Materiais p/Serviços Diversos
1.02.004 Materiais de construção - SPESoma
1.03.001 Serv Prestado Pessoa Fisica
E no grupo 2 a mesma quebra.
2.01.001
2.04.0022.05.001
Sera que possivel.
Obrigado a todos pela ajuda..
Respostas
-
Ronnie,
Se eu entendi direito o que você quer, acho que vai dar certo.
Tenta assim:
Select substring(FLAN.CODTB1FLX,1,4), FLAN.CODTB1FLX, FTB1.DESCRICAO, TotalAnoAnterior = Sum(Case When (Year(DataBaixa) = Year(GetDate()) - 1) Then IsNull(ValorBaixado, 0) End), Janeiro = Sum(Case When (Month(DataBaixa) = 1) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Fevereiro = Sum(Case When (Month(DataBaixa) = 2) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Março = Sum(Case When (Month(DataBaixa) = 3) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Abril = Sum(Case When (Month(DataBaixa) = 4) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Maio = Sum(Case When (Month(DataBaixa) = 5) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Junho = Sum(Case When (Month(DataBaixa) = 6) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Julho = Sum(Case When (Month(DataBaixa) = 7) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Agosto = Sum(Case When (Month(DataBaixa) = 8) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Setembro = Sum(Case When (Month(DataBaixa) = 9) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Outubro = Sum(Case When (Month(DataBaixa) = 10) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Novembro = Sum(Case When (Month(DataBaixa) = 11) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Dezembro = Sum(Case When (Month(DataBaixa) = 12) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), TotalGeral = Sum(Case When (Year(DataBaixa) = Year(GetDate()) ) Then IsNull(ValorBaixado, 0) End) FROM FLAN INNER JOIN FTB1 ON FTB1.CODCOLIGADA = FLAN.CODCOLIGADA AND FTB1.CODTB1FLX = FLAN.CODTB1FLX WHERE FLAN.CODCOLIGADA= '1' GROUP BY substring(FLAN.CODTB1FLX,1,4),FLAN.CODTB1FLX,FTB1.DESCRICAO ORDER BY 1
Att,
Fredy Esmeraldo
Microsoft MCP, MCTS, MCITP Database Administrator 2008
Visite o meu blog: http://fredyesmeraldo.wordpress.com
Me siga no twitter: @fredyesmeraldo
LinkedIN: Fredy Esmeraldo
**Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
**Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**- Marcado como Resposta Ronnie Von terça-feira, 5 de julho de 2011 14:44
-
O Rollup soma pelo agrupamento.
Pra fazer o que você quer, seria necessário tirar algumas colunas para somar pelo agrupamento correto.
Mais ou menos assim:
Select substring(FLAN.CODTB1FLX,1,4), TotalAnoAnterior = Sum(Case When (Year(DataBaixa) = Year(GetDate()) - 1) Then IsNull(ValorBaixado, 0) End), Janeiro = Sum(Case When (Month(DataBaixa) = 1) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Fevereiro = Sum(Case When (Month(DataBaixa) = 2) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Março = Sum(Case When (Month(DataBaixa) = 3) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Abril = Sum(Case When (Month(DataBaixa) = 4) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Maio = Sum(Case When (Month(DataBaixa) = 5) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Junho = Sum(Case When (Month(DataBaixa) = 6) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Julho = Sum(Case When (Month(DataBaixa) = 7) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Agosto = Sum(Case When (Month(DataBaixa) = 8) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Setembro = Sum(Case When (Month(DataBaixa) = 9) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Outubro = Sum(Case When (Month(DataBaixa) = 10) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Novembro = Sum(Case When (Month(DataBaixa) = 11) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Dezembro = Sum(Case When (Month(DataBaixa) = 12) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), TotalGeral = Sum(Case When (Year(DataBaixa) = Year(GetDate()) ) Then IsNull(ValorBaixado, 0) End) FROM FLAN INNER JOIN FTB1 ON FTB1.CODCOLIGADA = FLAN.CODCOLIGADA AND FTB1.CODTB1FLX = FLAN.CODTB1FLX WHERE FLAN.CODCOLIGADA= '1' GROUP BY substring(FLAN.CODTB1FLX,1,4) WITH ROLLUP ORDER BY 1
Aí a partir dessa você faz um join ou um CTE e monta a sua query com o restante das colunas.
Att,
Fredy Esmeraldo
Microsoft MCP, MCTS, MCITP Database Administrator 2008
Visite o meu blog: http://fredyesmeraldo.wordpress.com
Me siga no twitter: @fredyesmeraldo
LinkedIN: Fredy Esmeraldo
**Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
**Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**- Marcado como Resposta Ronnie Von terça-feira, 5 de julho de 2011 14:44
-
Ola Fredy esta ficando show de bola, so uma duvida com a opção WITH ROLLUP ele soma linha por linha pensei que que iria somar pelas Quebras.
tipo
Total grupo 1.01
Total Grupo 1.02
Entendeu.
Obrigado
- Marcado como Resposta Ronnie Von terça-feira, 5 de julho de 2011 14:44
Todas as Respostas
-
Ronnie,
Se eu entendi direito o que você quer, acho que vai dar certo.
Tenta assim:
Select substring(FLAN.CODTB1FLX,1,4), FLAN.CODTB1FLX, FTB1.DESCRICAO, TotalAnoAnterior = Sum(Case When (Year(DataBaixa) = Year(GetDate()) - 1) Then IsNull(ValorBaixado, 0) End), Janeiro = Sum(Case When (Month(DataBaixa) = 1) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Fevereiro = Sum(Case When (Month(DataBaixa) = 2) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Março = Sum(Case When (Month(DataBaixa) = 3) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Abril = Sum(Case When (Month(DataBaixa) = 4) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Maio = Sum(Case When (Month(DataBaixa) = 5) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Junho = Sum(Case When (Month(DataBaixa) = 6) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Julho = Sum(Case When (Month(DataBaixa) = 7) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Agosto = Sum(Case When (Month(DataBaixa) = 8) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Setembro = Sum(Case When (Month(DataBaixa) = 9) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Outubro = Sum(Case When (Month(DataBaixa) = 10) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Novembro = Sum(Case When (Month(DataBaixa) = 11) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Dezembro = Sum(Case When (Month(DataBaixa) = 12) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), TotalGeral = Sum(Case When (Year(DataBaixa) = Year(GetDate()) ) Then IsNull(ValorBaixado, 0) End) FROM FLAN INNER JOIN FTB1 ON FTB1.CODCOLIGADA = FLAN.CODCOLIGADA AND FTB1.CODTB1FLX = FLAN.CODTB1FLX WHERE FLAN.CODCOLIGADA= '1' GROUP BY substring(FLAN.CODTB1FLX,1,4),FLAN.CODTB1FLX,FTB1.DESCRICAO ORDER BY 1
Att,
Fredy Esmeraldo
Microsoft MCP, MCTS, MCITP Database Administrator 2008
Visite o meu blog: http://fredyesmeraldo.wordpress.com
Me siga no twitter: @fredyesmeraldo
LinkedIN: Fredy Esmeraldo
**Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
**Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**- Marcado como Resposta Ronnie Von terça-feira, 5 de julho de 2011 14:44
-
Pra fazer o somatório, esqueci do ROLLUP.
Segue:
Select substring(FLAN.CODTB1FLX,1,4), FLAN.CODTB1FLX, FTB1.DESCRICAO, TotalAnoAnterior = Sum(Case When (Year(DataBaixa) = Year(GetDate()) - 1) Then IsNull(ValorBaixado, 0) End), Janeiro = Sum(Case When (Month(DataBaixa) = 1) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Fevereiro = Sum(Case When (Month(DataBaixa) = 2) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Março = Sum(Case When (Month(DataBaixa) = 3) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Abril = Sum(Case When (Month(DataBaixa) = 4) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Maio = Sum(Case When (Month(DataBaixa) = 5) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Junho = Sum(Case When (Month(DataBaixa) = 6) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Julho = Sum(Case When (Month(DataBaixa) = 7) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Agosto = Sum(Case When (Month(DataBaixa) = 8) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Setembro = Sum(Case When (Month(DataBaixa) = 9) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Outubro = Sum(Case When (Month(DataBaixa) = 10) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Novembro = Sum(Case When (Month(DataBaixa) = 11) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Dezembro = Sum(Case When (Month(DataBaixa) = 12) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), TotalGeral = Sum(Case When (Year(DataBaixa) = Year(GetDate()) ) Then IsNull(ValorBaixado, 0) End) FROM FLAN INNER JOIN FTB1 ON FTB1.CODCOLIGADA = FLAN.CODCOLIGADA AND FTB1.CODTB1FLX = FLAN.CODTB1FLX WHERE FLAN.CODCOLIGADA= '1' GROUP BY substring(FLAN.CODTB1FLX,1,4),FLAN.CODTB1FLX,FTB1.DESCRICAO WITH ROLLUP ORDER BY 1
Att,
Fredy Esmeraldo
Microsoft MCP, MCTS, MCITP Database Administrator 2008
Visite o meu blog: http://fredyesmeraldo.wordpress.com
Me siga no twitter: @fredyesmeraldo
LinkedIN: Fredy Esmeraldo
**Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
**Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.** -
Ola Fredy esta ficando show de bola, so uma duvida com a opção WITH ROLLUP ele soma linha por linha pensei que que iria somar pelas Quebras.
tipo
Total grupo 1.01
Total Grupo 1.02
Entendeu.
Obrigado
- Marcado como Resposta Ronnie Von terça-feira, 5 de julho de 2011 14:44
-
O Rollup soma pelo agrupamento.
Pra fazer o que você quer, seria necessário tirar algumas colunas para somar pelo agrupamento correto.
Mais ou menos assim:
Select substring(FLAN.CODTB1FLX,1,4), TotalAnoAnterior = Sum(Case When (Year(DataBaixa) = Year(GetDate()) - 1) Then IsNull(ValorBaixado, 0) End), Janeiro = Sum(Case When (Month(DataBaixa) = 1) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Fevereiro = Sum(Case When (Month(DataBaixa) = 2) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Março = Sum(Case When (Month(DataBaixa) = 3) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Abril = Sum(Case When (Month(DataBaixa) = 4) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Maio = Sum(Case When (Month(DataBaixa) = 5) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Junho = Sum(Case When (Month(DataBaixa) = 6) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Julho = Sum(Case When (Month(DataBaixa) = 7) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Agosto = Sum(Case When (Month(DataBaixa) = 8) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Setembro = Sum(Case When (Month(DataBaixa) = 9) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Outubro = Sum(Case When (Month(DataBaixa) = 10) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Novembro = Sum(Case When (Month(DataBaixa) = 11) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), Dezembro = Sum(Case When (Month(DataBaixa) = 12) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End), TotalGeral = Sum(Case When (Year(DataBaixa) = Year(GetDate()) ) Then IsNull(ValorBaixado, 0) End) FROM FLAN INNER JOIN FTB1 ON FTB1.CODCOLIGADA = FLAN.CODCOLIGADA AND FTB1.CODTB1FLX = FLAN.CODTB1FLX WHERE FLAN.CODCOLIGADA= '1' GROUP BY substring(FLAN.CODTB1FLX,1,4) WITH ROLLUP ORDER BY 1
Aí a partir dessa você faz um join ou um CTE e monta a sua query com o restante das colunas.
Att,
Fredy Esmeraldo
Microsoft MCP, MCTS, MCITP Database Administrator 2008
Visite o meu blog: http://fredyesmeraldo.wordpress.com
Me siga no twitter: @fredyesmeraldo
LinkedIN: Fredy Esmeraldo
**Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
**Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**- Marcado como Resposta Ronnie Von terça-feira, 5 de julho de 2011 14:44
-
-
Obrigado, Ronnie.
Qualquer dúvida, estou à disposição.
Att,
Fredy Esmeraldo
Microsoft MCP, MCTS, MCITP Database Administrator 2008
Visite o meu blog: http://fredyesmeraldo.wordpress.com
Me siga no twitter: @fredyesmeraldo
LinkedIN: Fredy Esmeraldo
**Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
**Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**