SELECT TABELA.MAQUINA,
TABELA.TIPO_MANU,
SUM(MANUTENCAO) MANUTENCAO,
SUM(ELETRICA) ELETRICA,
SUM(ELETRONICA) ELETRONICA,
SUM(UTILIDADES) UTILIDADES,
SUM(OFICINA) OFICINA
FROM (SELECT APLIC.TAG MAQUINA,
TIPMANUT.DESCRICAO TIPO_MANU,
NVL(COUNT(ORDSERV.TAG), 0) MANUTENCAO,
0 ELETRICA,
0 ELETRONICA,
0 UTILIDADES,
0 OFICINA
FROM ORDSERV, APLIC, TIPMANUT, SETEXE
WHERE ORDSERV.DATPRO BETWEEN '01-jan-09' AND '30-jan-09'
AND ORDSERV.CODAPL = APLIC.CODAPL
AND ORDSERV.CODEMP_2 = TIPMANUT.CODEMP
AND ORDSERV.CODTIPMAN = TIPMANUT.CODTIPMAN
AND ORDSERV.CODEMP_4 = SETEXE.CODEMP
AND ORDSERV.CODSET = SETEXE.CODSET
AND ORDSERV.STATORD = 'F'
AND SETEXE.CODSET = 22
GROUP BY APLIC.TAG, TIPMANUT.DESCRICAO
UNION
SELECT APLIC.TAG MAQUINA,
TIPMANUT.DESCRICAO TIPO_MANU,
0 MANUTENCAO,
NVL(COUNT(ORDSERV.TAG), 0) ELETRICA,
0 ELETRONICA,
0 UTILIDADES,
0 OFICINA
FROM ORDSERV, APLIC, TIPMANUT, SETEXE
WHERE ORDSERV.DATPRO BETWEEN '01-jan-09' AND '30-jan-09'
AND ORDSERV.CODAPL = APLIC.CODAPL
AND ORDSERV.CODEMP_2 = TIPMANUT.CODEMP
AND ORDSERV.CODTIPMAN = TIPMANUT.CODTIPMAN
AND ORDSERV.CODEMP_4 = SETEXE.CODEMP
AND ORDSERV.CODSET = SETEXE.CODSET
AND ORDSERV.STATORD = 'F'
AND SETEXE.CODSET = 21
GROUP BY APLIC.TAG, TIPMANUT.DESCRICAO
UNION
SELECT APLIC.TAG MAQUINA,
TIPMANUT.DESCRICAO TIPO_MANU,
0 MANUTENCAO,
0 ELETRICA,
NVL(COUNT(ORDSERV.TAG), 0) ELETRONICA,
0 UTILIDADES,
0 OFICINA
FROM ORDSERV, APLIC, TIPMANUT, SETEXE
WHERE ORDSERV.DATPRO BETWEEN '01-jan-09' AND '30-jan-09'
AND ORDSERV.CODAPL = APLIC.CODAPL
AND ORDSERV.CODEMP_2 = TIPMANUT.CODEMP
AND ORDSERV.CODTIPMAN = TIPMANUT.CODTIPMAN
AND ORDSERV.CODEMP_4 = SETEXE.CODEMP
AND ORDSERV.CODSET = SETEXE.CODSET
AND ORDSERV.STATORD = 'F'
AND SETEXE.CODSET = 27
GROUP BY APLIC.TAG, TIPMANUT.DESCRICAO
UNION
SELECT APLIC.TAG MAQUINA,
TIPMANUT.DESCRICAO TIPO_MANU,
0 MANUTENCAO,
0 ELETRICA,
0 ELETRONICA,
NVL(COUNT(ORDSERV.TAG), 0) UTILIDADES,
0 OFICINA
FROM ORDSERV, APLIC, TIPMANUT, SETEXE
WHERE ORDSERV.DATPRO BETWEEN '01-jan-09' AND '30-jan-09'
AND ORDSERV.CODAPL = APLIC.CODAPL
AND ORDSERV.CODEMP_2 = TIPMANUT.CODEMP
AND ORDSERV.CODTIPMAN = TIPMANUT.CODTIPMAN
AND ORDSERV.CODEMP_4 = SETEXE.CODEMP
AND ORDSERV.CODSET = SETEXE.CODSET
AND ORDSERV.STATORD = 'F'
AND SETEXE.CODSET = 23
GROUP BY APLIC.TAG, TIPMANUT.DESCRICAO
UNION
SELECT APLIC.TAG MAQUINA,
TIPMANUT.DESCRICAO TIPO_MANU,
0 MANUTENCAO,
0 ELETRICA,
0 ELETRONICA,
0 UTILIDADES,
NVL(COUNT(ORDSERV.TAG), 0) OFICINA
FROM ORDSERV, APLIC, TIPMANUT, SETEXE
WHERE ORDSERV.DATPRO BETWEEN '01-jan-09' AND '30-jan-09'
AND ORDSERV.CODAPL = APLIC.CODAPL
AND ORDSERV.CODEMP_2 = TIPMANUT.CODEMP
AND ORDSERV.CODTIPMAN = TIPMANUT.CODTIPMAN
AND ORDSERV.CODEMP_4 = SETEXE.CODEMP
AND ORDSERV.CODSET = SETEXE.CODSET
AND ORDSERV.STATORD = 'F'
AND SETEXE.CODSET = 26
GROUP BY APLIC.TAG, TIPMANUT.DESCRICAO) TABELA
GROUP BY TABELA.MAQUINA, TABELA.TIPO_MANU
Dúvida.
-
- Rank: Estagiário Júnior
- Mensagens: 1
- Registrado em: Dom, 24 Mai 2009 11:44 am
- Localização: Fortaleza
Olá pessoal estou iniciando na programação PL/SQL. Tenho que criar um relatório que me mostre a quantidade Total de OS’s (Ordens de Serviço) e um percentual discriminado por setor. Criei o seguinte código para determinar a quantidade individual por setor. Mais não consigo elaborar um count(*) que me mostre em uma outra coluna, o total (soma de todos os setores). Ai vai o código que elaborei: se conhecerem uma forma mais simples de realizar essa consulta, fico muito grato.... Valeu.
- anderson
- Rank: Analista Júnior
- Mensagens: 75
- Registrado em: Seg, 06 Jun 2005 1:08 pm
- Localização: Toledo - PR
- Contato:
Anderson Nuernberg
---
---
primeiro, segue uma maneira de otimizar um pouco, tente a consulta abaixo.
veja ai se funciona.
SELECT APLIC.TAG MAQUINA,
TIPMANUT.DESCRICAO TIPO_MANU,
CASE
WHEN SETEXE.CODSET = 22 THEN 'MANUTENCAO'
WHEN SETEXE.CODSET = 21 THEN 'ELETRICA'
WHEN SETEXE.CODSET = 27 THEN 'ELETRONICA'
WHEN SETEXE.CODSET = 23 THEN 'UTILIDADES'
WHEN SETEXE.CODSET = 26 THEN 'OFICINA'
END SETOR,
NVL(COUNT(ORDSERV.TAG), 0) QUANTIDADE
FROM ORDSERV, APLIC, TIPMANUT, SETEXE
WHERE ORDSERV.DATPRO BETWEEN '01-jan-09' AND '30-jan-09'
AND ORDSERV.CODAPL = APLIC.CODAPL
AND ORDSERV.CODEMP_2 = TIPMANUT.CODEMP
AND ORDSERV.CODTIPMAN = TIPMANUT.CODTIPMAN
AND ORDSERV.CODEMP_4 = SETEXE.CODEMP
AND ORDSERV.CODSET = SETEXE.CODSET
AND ORDSERV.STATORD = 'F'
AND SETEXE.CODSET IN (21,22,23,26,27)
GROUP BY APLIC.TAG, TIPMANUT.DESCRICAO, SETEXE.CODSET
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Seg, 08 Set 2008 7:35 pm
- Localização: Ribeirão Preto - SP
Marcelo Nunes
Analista/Desenvolvedor Oracle
Analista/Desenvolvedor Oracle
Cara, existe uma função no oracle para ser utilizada no group by que se chama "ROLLUP".
Dá uma ulhada nesse tópico, acho que pode ser útil nesse caso...
http://glufke.net/oracle/viewtopic.php?t=304
Dá uma ulhada nesse tópico, acho que pode ser útil nesse caso...
http://glufke.net/oracle/viewtopic.php?t=304
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes