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
  

Mensagemem Ter, 30 Abr 2019 2:41 pm

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.
Código: Selecionar todos
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
petruschky

Mensagemem Ter, 30 Abr 2019 3:10 pm

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]
dr_gori
Localização: Portland, OR USA

Thomas F. G

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

Mensagemem Ter, 30 Abr 2019 3:24 pm

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

Código: Selecionar todos
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

petruschky

Mensagemem Ter, 30 Abr 2019 3:52 pm

Tente alterar o seu GROUP BY.
Atualmente está assim: (últimas 3 linhas do seu select)
Código: Selecionar todos
GROUP BY DESC_FILIAL,
QA_GRP,
SETOR


Tente mudar para:
Código: Selecionar todos
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)
Código: Selecionar todos
select
  'TESTE' campo
, empno
, sum(sal)
from emp
group by empno, campo;


Mas assim funciona:
Código: Selecionar todos
select
  'TESTE' campo
, empno
, sum(sal)
from emp
group by empno;   -- SEM constante
dr_gori
Localização: Portland, OR USA

Thomas F. G

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



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes