natchos 0 Denunciar post Postado Junho 6, 2011 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
Motta 645 Denunciar post Postado Junho 6, 2011 Use o CASE. Compartilhar este post Link para o post Compartilhar em outros sites
ChuckyBrazil 0 Denunciar post Postado Junho 6, 2011 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
natchos 0 Denunciar post Postado Junho 6, 2011 Muito obrigado. Com esse Select da pra trabalhar agora. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Junho 6, 2011 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
natchos 0 Denunciar post Postado Junho 8, 2011 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
natchos 0 Denunciar post Postado Junho 12, 2011 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
Motta 645 Denunciar post Postado Junho 13, 2011 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
natchos 0 Denunciar post Postado Junho 13, 2011 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
Motta 645 Denunciar post Postado Junho 13, 2011 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
natchos 0 Denunciar post Postado Junho 13, 2011 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
Motta 645 Denunciar post Postado Junho 13, 2011 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
natchos 0 Denunciar post Postado Junho 14, 2011 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
Motta 645 Denunciar post Postado Junho 14, 2011 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
natchos 0 Denunciar post Postado Junho 14, 2011 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
natchos 0 Denunciar post Postado Junho 15, 2011 Bom dia, Muito obrigado pela paciencia Motta. A sintaxe funcionou certinho. Valeu mesmo. Compartilhar este post Link para o post Compartilhar em outros sites