Agrupamento por coluna específica dentre várias outras
Olá!
Preciso fazer um agrupamento da seguinte string abaixo, sempre que for a mesma nota fiscal e o mesmo emitente,
preciso que ele agrupe em uma unica linha. Só que não estou conseguindo representar em uma unica linha pelo fato de haver
movimentações de entrada e saída, ou seja, há duas linha referente a uma unica nota fiscal.
Até tentei o group by, mas mesmo assim ele demonstra em duas linhas, pelo fato de have movimento de entrada e saída.
Como faço para agrupar em uma unica linha somando os valores?
No exemplo dessa string acima, o valor entra e sai da conta 1271190120001, sendo assim não quero que ele apareça, mas está aparecendo.
Como faço para agrupar?
Preciso fazer um agrupamento da seguinte string abaixo, sempre que for a mesma nota fiscal e o mesmo emitente,
preciso que ele agrupe em uma unica linha. Só que não estou conseguindo representar em uma unica linha pelo fato de haver
movimentações de entrada e saída, ou seja, há duas linha referente a uma unica nota fiscal.
Até tentei o group by, mas mesmo assim ele demonstra em duas linhas, pelo fato de have movimento de entrada e saída.
Como faço para agrupar em uma unica linha somando os valores?
SELECT A.DT_TRANS, A.CT_SALDO, A.TIPO_TRANS, CASE WHEN A.TIPO_TRANS="1" THEN "ENT" ELSE "SAI" END AS "Tipo", SUM(CASE WHEN A.TIPO_TRANS="2" THEN A.VALOR_MAT_M##1+A.VALOR_IPI+A.VALOR_ICM ELSE (A.VALOR_MAT_M##1+A.VALOR_IPI+A.VALOR_ICM)*-1 END) AS "Valor Total", A.NRO_DOCTO AS "Nro Docto", A.COD_EMITENTE AS "Cod.Emitente" FROM EMS2SFSS.MOVTO_ESTOQ A WHERE A.NRO_DOCTO='0186563' AND A.COD_EMITENTE='134089' GROUP BY A.DT_TRANS,A.CT_SALDO,A.TIPO_TRANS,A.NRO_DOCTO,A.COD_EMITENTE
No exemplo dessa string acima, o valor entra e sai da conta 1271190120001, sendo assim não quero que ele apareça, mas está aparecendo.
Como faço para agrupar?
Lucas Dourado
Curtidas 0
Respostas
Emerson Nascimento
21/10/2019
deve ser algo assim:
talvez CT_SALDO não deva fazer parte do retorno nem do agrupamento, mas sem alguns registros de exemplo fica complicado passar uma solução perfeita para o caso.
SELECT A.DT_TRANS, A.CT_SALDO, SUM(CASE WHEN A.TIPO_TRANS="1" THEN A.VALOR_MAT_M##1+A.VALOR_IPI+A.VALOR_ICM ELSE (A.VALOR_MAT_M##1+A.VALOR_IPI+A.VALOR_ICM)*-1 END) AS ENTRADA, SUM(CASE WHEN A.TIPO_TRANS="2" THEN A.VALOR_MAT_M##1+A.VALOR_IPI+A.VALOR_ICM ELSE (A.VALOR_MAT_M##1+A.VALOR_IPI+A.VALOR_ICM)*-1 END) AS SAIDA, A.NRO_DOCTO AS "Nro Docto", A.COD_EMITENTE AS "Cod.Emitente" FROM EMS2SFSS.MOVTO_ESTOQ A WHERE A.NRO_DOCTO='0186563' AND A.COD_EMITENTE='134089' GROUP BY A.DT_TRANS,A.CT_SALDO,A.NRO_DOCTO,A.COD_EMITENTE
talvez CT_SALDO não deva fazer parte do retorno nem do agrupamento, mas sem alguns registros de exemplo fica complicado passar uma solução perfeita para o caso.
GOSTEI 0
Emerson Nascimento
21/10/2019
ou ainda:
SELECT A.DT_TRANS, A.CT_SALDO, SUM((A.VALOR_MAT_M##1+A.VALOR_IPI+A.VALOR_ICM)*(CASE WHEN A.TIPO_TRANS="2" THEN 1 ELSE -1 END)) AS "Valor Total", A.NRO_DOCTO AS "Nro Docto", A.COD_EMITENTE AS "Cod.Emitente" FROM EMS2SFSS.MOVTO_ESTOQ A WHERE A.NRO_DOCTO='0186563' AND A.COD_EMITENTE='134089' GROUP BY A.DT_TRANS,A.CT_SALDO,A.NRO_DOCTO,A.COD_EMITENTE
GOSTEI 0
Emerson Nascimento
21/10/2019
a primeira resposta, na verdade deveria ser assim:
deve ser algo assim:
talvez CT_SALDO não deva fazer parte do retorno nem do agrupamento, mas sem alguns registros de exemplo fica complicado passar uma solução perfeita para o caso.
deve ser algo assim:
SELECT A.DT_TRANS, A.CT_SALDO, SUM(CASE WHEN A.TIPO_TRANS="1" THEN A.VALOR_MAT_M##1+A.VALOR_IPI+A.VALOR_ICM ELSE 0 END) AS ENTRADA, SUM(CASE WHEN A.TIPO_TRANS="2" THEN A.VALOR_MAT_M##1+A.VALOR_IPI+A.VALOR_ICM ELSE 0 END) AS SAIDA, A.NRO_DOCTO AS "Nro Docto", A.COD_EMITENTE AS "Cod.Emitente" FROM EMS2SFSS.MOVTO_ESTOQ A WHERE A.NRO_DOCTO='0186563' AND A.COD_EMITENTE='134089' GROUP BY A.DT_TRANS,A.CT_SALDO,A.NRO_DOCTO,A.COD_EMITENTE
talvez CT_SALDO não deva fazer parte do retorno nem do agrupamento, mas sem alguns registros de exemplo fica complicado passar uma solução perfeita para o caso.
GOSTEI 0