Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

natchos

[Resolvido] Montar tabela

Recommended Posts

Caros Colegas, preciso de uma ajuda. É o seguinte

 

tenho uma tabela com as seguintes informaçoes:

 

setor1 valor1

setor1 valor2

setor1 valor1

setor2 valor3

setor2 valor2

setor2 valor2

setor2 valor1

setor3 valor1

setor3 valor3

setor3 valor3

setor3 valor1

setor1 valor1

setor1 valor2

 

preciso emitir um relatorio da seguinte forma:

 

setor---valor1----valor2---valor3

1-----TOTAL------TOTAL----TOTAL

2-----TOTAL------TOTAL----TOTAL

3-----TOTAL------TOTAL----TOTAL

 

Ou seja, para cada setor (1,2 e 3 no caso) o total linhas com valor1, valor2 e valor3.

 

Teria jeito de fazer através de SELECT?

 

Obrigado.

Share this post


Link to post
Share on other sites

outra alternativa é executar a query abaixo:

 

SELECT setor, valor, count(*) FROM #tabela GROUP BY setor, valor

 

com o retorno, você monta a logica para exibição como deseja, ou então se você estiver usando .NET, pode tentar usar o Report Matrix (Crystal Reports...) criando relatorios dinamicos

 

funcionou ?

Share this post


Link to post
Share on other sites

Usando a Referencia Cruzada (Cross Referenca) do Crystal fica muita mais fácil.

 

Não tendo parta para o CASE.

Share this post


Link to post
Share on other sites

Mais uma vez, obrigado pela ajuda. Pelo Select acima consegui extrair os dados mas da seguinte forma:

 

 

SECAO---- NIVEL--------------TOTAIS

SETOR1----- vazio---------------------3

SETOR1--NIVEL 0 - EXTERNO-------3

SETOR1--NIVEL 1 - ESTUDO--------1

SETOR2------vazio---------------------2

SETOR2--NIVEL 0 - EXTERNO-------1

SETOR2--NIVEL 1 - ESTUDO--------3

SETOR3------vazio---------------------2

SETOR3--NIVEL 0 - EXTERNO-------2

SETOR3--NIVEL 1 - ESTUDO--------2

SETOR4--NIVEL 0 - EXTERNO-------2

SETOR4--NIVEL 1 - ESTUDO--------1

 

Alguém sabe um código em PHP para tratar essas informações apresentado da seguinte forma:

 

SETOR-----VAZIO-----NIVEL0------NIVEL1-----TOTAL

SETOR1----TOTAL-----TOTAL-------TOTAL------TOTAL

...

 

Obrigado.

Share this post


Link to post
Share on other sites

Boa noite,

 

No caso do uso do CASE em SELECT, vocês poderiam me ajudar a formar a sintaxe para obter o resultado acima?

 

Obrigado.

Share this post


Link to post
Share on other sites

Um exemplo

 

vendas

------

id

uf

data

valor

 

1,rj,1/6/11,100

2,sp,2/6/11,100

3,mg,2/6/11,300

..

--

 

Supondo só as três uf´s

 

select data,
      sum(case when uf = 'rj' then valor else 0 end) rj,
      sum(case when uf = 'sp' then valor else 0 end) sp,
      sum(case when uf = 'mg' then valor else 0 end) mg
from tabela
group by data
order by data

Share this post


Link to post
Share on other sites

Bom dia,

tentei fazer dessa maneira, mas deu erro:

 

select SECAO,

COUNT(case when NIVEL="NIVEL 0 - EXTERNO" then "NIVEL0" else 0 end) NIVEL,

COUNT(case when NIVEL="NIVEL 1 - ESTUDO" then "NIVEL1" else 0 end) NIVEL,

COUNT(case when NIVEL="" then "NIVELV" else 0 end) NIVEL

from MAGNA

group by SECAO

order by SECAO;

 

Para cada SECAO ( que pode repetir varias vezes), preciso saber quantos NIVEL 1, quantos NIVEL0 e quantos VAZIOS repetem.

 

Desculpem, mas é que sou iniciante, por isso a dificuldade.

 

Obrigado.

Share this post


Link to post
Share on other sites

Tente :

 

select SECAO,
SUM(case when NIVEL="NIVEL 0 - EXTERNO" then 1 else 0 end) NIVEL0,
SUM(case when NIVEL="NIVEL 1 - ESTUDO" then 1 else 0 end) NIVEL1,
...
SUM(case when NIVEL="n" then 1 else 0 end) NIVELn
from MAGNA
group by SECAO
order by SECAO;

Share this post


Link to post
Share on other sites

Boa tarde,

 

Tentei da sua maneira mas não deu certo. Estava pensando em fazer assim:

 

SELECT SECAO,

(SELECT COUNT( NIVEL) FROM MAGNA WHERE NIVEL="NIVEL 0 - EXTERNO") AS NIVEL0,

(SELECT COUNT( NIVEL) FROM MAGNA WHERE NIVEL="NIVEL 1 - ESTUDO") AS NIVEL1,

(SELECT COUNT( NIVEL) FROM MAGNA WHERE NIVEL="" ) AS NIVELV

FROM MAGNA

GROUP BY SECAO;

 

até gera a tabela, mas os totais de NIVEL0, NIVEL1 e NIVELV estão errados. Não sei se consegui explicar bem, mas preciso gerar uma tabela dessa maneira:

 

SETOR---NIVEL0----NIVEL1-----NIVELV

SETOR Nº TOTAL----TOTAL-----TOTAL

 

A tabela em que preciso puxar esses dados está assim:

SETOR---NIVEL

setor1 NIVEL1

setor1 NIVEL0

setor1 NIVEL1

setor2 NIVELV

setor2 NIVEL1

setor2 NIVEL0

setor2 NIVEL1

setor3 NIVEL0

setor3 NIVELV

setor3 NIVELV

setor3 NIVEL1

setor1 NIVELV

setor1 NIVEL0

 

Obrigado.

Share this post


Link to post
Share on other sites

select SECAO,
SUM(case when NIVEL='NIVEL 0' then 1 else 0 end) NIVEL0,
SUM(case when NIVEL='NIVEL 1' then 1 else 0 end) NIVEL1,
SUM(case when NIVEL='NIVEL V' then 1 else 0 end) NIVELV
from MAGNA
group by SECAO
order by SECAO;

 

mas o contéudo deve ser exatamente igual a condição 'NIVEL 0' etc.

Share this post


Link to post
Share on other sites

Estou fazendo um teste no Access e tenho a seguinte resposta:

 

"Erro de sintaxe (operador faltando)na expressão de consulta 'SUM(case when NIVEL='NIVEL 0 - EXTERNO' then 1 else 0 end) NIVEL0'.

 

Obrigado.

Share this post


Link to post
Share on other sites

Access ?!

 

Não tenho certeza se Access tem CASE.

 

Este fórum é de MySql.

Share this post


Link to post
Share on other sites

O meu problema é no MySQL mesmo. É porque estava testando a sintaxe no serviço, e aqui só tem Access. Mas em casa vou testar no MySQL. Te retorno depois.

 

Obrigado.

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.