Resultado group by em linhas separadas

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
petruschky
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Ter, 30 Abr 2019 10:27 am

Boa tarde,

O código que tenho abaixo informa os valores em linha separadas, estes valores deveriam estar na mesma linha conforme o QA_grp.

Selecionar tudo

SELECT 'textil'                                         AS DESC_FILIAL,
       QA_GRP                                                    AS QA_GRP,
       'INDUSTRIAL'                                              AS SETOR,
       SUM(TOTAL_NAOCONFORME)                                    AS TOTAL_NAOCONFORME,     
       SUM(PRODUCAO)                                             AS PRODUCAO
FROM
(
SELECT 'textil'                                         AS DESC_FILIAL,
       GRP                                                       AS QA_GRP,
       'INDUSTRIAL'                                              AS SETOR,
       0                                                         AS TOTAL_NAOCONFORME,      
       PRODUCAO                                                  AS PRODUCAO
FROM (
SELECT SUM(VPF.QUILOS) as producao,
       'ACABAMENTO' as grp
FROM   VW_PI_CBPAP02_PRODBENEF VPF
WHERE VPF.FILIAL = 1
AND   VPF.PERIODO = 1
AND   VPF.GRUPO='ACA06'
AND   VPF.DATA_PROD BETWEEN DATA_INI_F AND DATA_FIM_F

union

SELECT SUM(VPF.QUILOS) as producao,
       'TINTURARIA' as grp
FROM   VW_PI_CBPAP02_PRODBENEF VPF
WHERE VPF.FILIAL = 1
AND   VPF.PERIODO = 1
AND   VPF.DESCR_FASE LIKE 'TINGIR%'
AND   VPF.DATA_PROD BETWEEN DATA_INI_F AND DATA_FIM_F

union

SELECT SUM(VPF.QUILOS) as producao,
       'ESTAMPARIA' as grp
FROM VW_PI_CBPAP02_PRODBENEF VPF
WHERE  VPF.FILIAL = 1
AND   VPF.PERIODO = 1
AND  VPF.NUMERO_MAQUINA in ('ME004','ME001')
AND   VPF.DATA_PROD BETWEEN DATA_INI_F AND DATA_FIM_F

union

SELECT SUM(CEC.QUANT) as producao,
       'MALHARIA' as grp
 FROM VW_PI_CBEPC09_EMB_CRU CEC
 WHERE CEC.SETOR IN (4, 6, 7, 16)
 AND  CEC.FILIAL = 1
 AND  CEC.DATA_PROD BETWEEN DATA_INI_F AND DATA_FIM_F
)

union

SELECT 'textil'                                         AS DESC_FILIAL,
       NVL(GRP.DESCRICAO_GRUPO,'não CLASSIFICADO')               AS QA_GRP,
       'INDUSTRIAL'                                              AS SETOR,
       SUM(RE.QUANT)                                             AS TOTAL_NAOCONFORME,
       0                                                         AS PRODUCAO
       
FROM   VW_PI_CBEPA02_MOV_ACA RE
LEFT OUTER JOIN GERAPECAREVISAO REV ON (REV.IDPECASPRODUTO=RE.IDPECASPRODUTO)
LEFT OUTER JOIN GRUPO_DEFEITO_QUALID GRP ON (GRP.CODIGO_GRUPO=REV.GRUPO_DEFEITO)
LEFT OUTER JOIN GERAPECADESTINOOB GOB ON (GOB.IDPECASPRODUTO = RE.IDPECASPRODUTO)
LEFT OUTER JOIN OB OB ON (OB.NUMERO_OB = GOB.NUMERO_OB)
WHERE  RE.deposito IN (54,55,51)
AND    RE.NUM_TIPO_MOVIMENTO IN (37)
AND    OB.CODIGO_FLUXO NOT IN (735)
AND    RE.QA NOT IN ('1    ')
AND    RE.DATA_MOV BETWEEN data_ini_f AND data_fim_f
AND    grp.codigo_grupo in ('TC','AT','AR','ES')
GROUP BY NVL(GRP.DESCRICAO_GRUPO,'não CLASSIFICADO')
)
GROUP BY DESC_FILIAL,
QA_GRP,
SETOR

Ele retornar a informação assim:
1 textil ESTAMPARIA INDUSTRIAL 0 178328,66
2 textil ESTAMPARIA INDUSTRIAL 3135,5 0
3 textil TINTURARIA INDUSTRIAL 0 161433,84
4 textil TINTURARIA INDUSTRIAL 2475,72 0

Gostaria que fosse assim:
1 textil ESTAMPARIA INDUSTRIAL 3135,5 178328,66
4 textil TINTURARIA INDUSTRIAL 2475,72 161433,84
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Tem como mandar um print screen de como deve ficar?
OU melhor ainda, faz a tabulação correta num editor de texto com fonte FIXA, copia, e cola aqui colocando as tags CODE. (Não entendi como que deve ficar)

Assim:

[code]
COLUNA1 COLUNA 2
ETC
[/code]
petruschky
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Ter, 30 Abr 2019 10:27 am

Melhorando a visualização, espero que fique melhor.

Selecionar tudo

atualmente retorna a informação assim:

DESC_FILIAL		QA_GRP			SETOR			TOTAL_NAOCONFORME	PRODUCAO
-------------------------------------------------------------------------------
textil			ESTAMPARIA		INDUSTRIAL		0					178328,66
textil			ESTAMPARIA 		INDUSTRIAL		3135,5				0
textil			TINTURARIA		INDUSTRIAL		0					161433,84
textil			TINTURARIA 		INDUSTRIAL		2475,72				0

Preciso que fique assim:

DESC_FILIAL		QA_GRP			SETOR			TOTAL_NAOCONFORME	PRODUCAO
-------------------------------------------------------------------------------
textil			ESTAMPARIA		INDUSTRIAL 		3135,5 				178328,66
textil			TINTURARIA 		INDUSTRIAL 		2475,72 			161433,84

Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Tente alterar o seu GROUP BY.
Atualmente está assim: (últimas 3 linhas do seu select)

Selecionar tudo

GROUP BY DESC_FILIAL,
QA_GRP,
SETOR
Tente mudar para:

Selecionar tudo

GROUP BY QA_GRP
Pelo que eu to vendo a DESC_FILIAL e SETOR são constantes. (Não entendi porque).
Mas enfim, constantes não podem estar no Group By.
Eu acho que na sua query, ele está se confundindo com o campo SETOR e DESC_FILIAL das sub-queries.

Veja esse exemplo: (Não funciona com constante)

Selecionar tudo

select 
  'TESTE' campo
, empno
, sum(sal) 
from emp 
group by empno, campo;
Mas assim funciona:

Selecionar tudo

select 
  'TESTE' campo
, empno
, sum(sal) 
from emp 
group by empno;   -- SEM constante
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Majestic-12 [Bot] e 17 visitantes