Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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.

Compartilhar este post


Link para o post
Compartilhar em outros 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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

Não tendo parta para o CASE.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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;

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Access ?!

 

Não tenho certeza se Access tem CASE.

 

Este fórum é de MySql.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.