 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
fdsilva.desenv Novato

Registrado: Quarta-Feira, 28 de Novembro de 2012 Mensagens: 68
|
Enviada: Qui Jan 25, 2018 8:25 am Assunto: Erro no subselect |
|
|
Galera, bom dia.
Então, estou com um problema no subselect que coloquei no meio do select, preciso dele para separar os valores totais onde o VALORTRIB > 0. Acontece que, ao colocar a subquery e referenciar com as tabelas principais aparece o seguinte erro:
"Msg 8120, Level 16, State 1, Line 9
Column 'CAIXAGERAL.VALORTRIB' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause."
O que fazer neste caso? Podem me ajudar?
| Código: |
SELECT DISTINCT NF.CODNFCE CODNF, CLIE.CNPJ_CPF, CLIE.CODCLIE CODIGO, 'S' IND_OPER, 0 IND_EMIT, '' COD_PART
, '65' COD_MOD, NF.SEQUENCIAL, NF.SITUACAO COD_SIT
, NF.CODCAIXA SERIE, NF.NUMNFCE NUMNF, '' REFCUPOMFISCAL, NF.CHAVEACESSO, NF.DATA DT_DOC, NF.DTENVIO DT_E_S, ROUND(SUM(ITMNF.TOTITEM)-SUM(ITMNF.DESCITEM)+SUM(ITMNF.ACRESCITEM),2) TOTAL_NF, 0 IND_PAGTO
, SUM(ROUND((ITMNF.DESCITEM*100)/ITMNF.TOTITEM,2)) PERDESCTO
, SUM(ROUND(ITMNF.TOTITEM*ITMNF.DESCITEM/100,2)) DESCONTO
, 0.00 VL_ABAT_NT, SUM(ITMNF.TOTITEM) TOTAL_MERC, '' TIPO_FRETE, 0 FRETE, 0 SEGURO, 0 VL_OUT_DA
, (SELECT SUM(ROUND(CX.TOTITEM - CX.DESCITEM + CX.ACRESCITEM,2)) FROM CAIXAGERAL CX WHERE CX.VALORTRIB > 0
AND NF.NUMNFCE = CX.COO AND NF.CODCAIXA = CX.CODCAIXA AND NF.SEQUENCIAL = CX.SEQUENCIAL AND NF.DATA = CX.DATA ) BASE_ICMS
, (SELECT ROUND( (SUM(CX.TOTITEM - CX.DESCITEM + CX.ACRESCITEM)*CX.VALORTRIB)/100,2) FROM CAIXAGERAL CX WHERE CX.VALORTRIB = 0
AND NF.NUMNFCE = CX.COO AND NF.CODCAIXA = CX.CODCAIXA AND NF.SEQUENCIAL = CX.SEQUENCIAL AND NF.DATA = CX.DATA ) VALOR_ICMS
, (SELECT SUM(ROUND(CX.TOTITEM - CX.DESCITEM + CX.ACRESCITEM,2)) FROM CAIXAGERAL CX WHERE CX.VALORTRIB = 0
AND NF.NUMNFCE = CX.COO AND NF.CODCAIXA = CX.CODCAIXA AND NF.SEQUENCIAL = CX.SEQUENCIAL AND NF.DATA = CX.DATA ) VALOR_ISENTO
, 0 BASEICMSSUBST, 0 VALORICMSSUBST
, 0 BASE_IPI, 0 VALOR_IPI, 'N' DEVOLUCAO, 'N' NFCOMPLEMENTAR, 'SP10' COP
, 0 VALOR_ACRESCIMO
, SUM(ROUND(ITMNF.TOTITEM - ITMNF.DESCITEM + ITMNF.ACRESCITEM,2)) VALOR_MERC
, 0 BASE_ICMS_ITM
, 0 VL_ICMS
, 0 VL_BC_ST
, 0 VL_ICMS_ST
, 0 BASE_IPI_ITM
, 0 VL_IPI_ITM
, 0.00 VL_PIS_ST, 0.00 VL_COFINS_ST
, 0 CODOBS
, 'S' EMISSAOPROPRIA
FROM NFCE NF
INNER JOIN CAIXAGERAL ITMNF ON ITMNF.COO = NF.NUMNFCE AND ITMNF.CODCAIXA = NF.CODCAIXA AND ITMNF.SEQUENCIAL = NF.SEQUENCIAL AND NF.DATA = ITMNF.DATA
LEFT JOIN CXCNPJCPF CXCLIE ON CXCLIE.COO = NF.NUMNFCE AND CXCLIE.CODCAIXA = NF.CODCAIXA AND CXCLIE.SEQUENCIAL = NF.SEQUENCIAL AND NF.DATA = CXCLIE.DATA
LEFT JOIN CLIENTES CLIE ON CLIE.CNPJ_CPF=CXCLIE.CNPJ_CPF
WHERE
NF.SITUACAO IN ('E','C')
AND ITMNF.DATA BETWEEN '2017-10-01' AND '2017-10-02'
AND ITMNF.TOTITEM > 0
GROUP BY NF.CODNFCE, CLIE.CNPJ_CPF, CLIE.CODCLIE, NF.SEQUENCIAL, NF.SITUACAO
, NF.CODCAIXA, NF.NUMNFCE, NF.CHAVEACESSO, NF.DATA, NF.DTENVIO |
|
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Jan 25, 2018 9:09 am Assunto: |
|
|
Bom dia,
Pelo que entendi acho que é possível obter o resultado esperado sem a subquery. Experimente fazer uns testes substituindo a subquery pelo trecho abaixo:
| Código: | | , SUM(CASE WHEN ITMNF.VALORTRIB > 0 THEN ROUND(ITMNF.TOTITEM - ITMNF.DESCITEM + ITMNF.ACRESCITEM, 2) ELSE 0 END) BASE_ICMS |
Espero que ajude
_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-residencial-casa |
|
| Voltar ao Topo |
|
 |
fdsilva.desenv Novato

Registrado: Quarta-Feira, 28 de Novembro de 2012 Mensagens: 68
|
Enviada: Qui Jan 25, 2018 9:35 am Assunto: |
|
|
Fiz as alterações conforme me passou, não apresentou mais o erros, mas todos os valores vieram zerados dos três campos abaixo BASE_ICMS, VALOR_ICMS e ISENTOS. E eu sei que possuem valores nestes campos, pois é um calculo do TOTITEM.
Acredito que o resultado não deu certo ainda.
| Código: |
SELECT DISTINCT NF.CODNFCE CODNF, CLIE.CNPJ_CPF, CLIE.CODCLIE CODIGO, 'S' IND_OPER, 0 IND_EMIT, '' COD_PART
, '65' COD_MOD, NF.SEQUENCIAL, NF.SITUACAO COD_SIT
, NF.CODCAIXA SERIE, NF.NUMNFCE NUMNF, '' REFCUPOMFISCAL, NF.CHAVEACESSO, NF.DATA DT_DOC, NF.DTENVIO DT_E_S, ROUND(SUM(ITMNF.TOTITEM)-SUM(ITMNF.DESCITEM)+SUM(ITMNF.ACRESCITEM),2) TOTAL_NF, 0 IND_PAGTO
, SUM(ROUND((ITMNF.DESCITEM*100)/ITMNF.TOTITEM,2)) PERDESCTO
, SUM(ROUND(ITMNF.TOTITEM*ITMNF.DESCITEM/100,2)) DESCONTO
, 0.00 VL_ABAT_NT, SUM(ITMNF.TOTITEM) TOTAL_MERC, '' TIPO_FRETE, 0 FRETE, 0 SEGURO, 0 VL_OUT_DA
, SUM(CASE WHEN ITMNF.VALORTRIB > 0 THEN ROUND(ITMNF.TOTITEM - ITMNF.DESCITEM + ITMNF.ACRESCITEM,2) ELSE 0 END) BASE_ICMS
, SUM(CASE WHEN ITMNF.VALORTRIB > 0 THEN ROUND((ITMNF.TOTITEM - ITMNF.DESCITEM + ITMNF.ACRESCITEM)*ITMNF.VALORTRIB/100,2) ELSE 0 END)VALOR_ICMS
, SUM(CASE WHEN ITMNF.VALORTRIB = 0 THEN ROUND(ITMNF.TOTITEM - ITMNF.DESCITEM + ITMNF.ACRESCITEM,2) ELSE 0 END) VALOR_ISENTO
, 0 BASEICMSSUBST, 0 VALORICMSSUBST
, 0 BASE_IPI, 0 VALOR_IPI, 'N' DEVOLUCAO, 'N' NFCOMPLEMENTAR, 'SP10' COP
, 0 VALOR_ACRESCIMO
, SUM(ROUND(ITMNF.TOTITEM - ITMNF.DESCITEM + ITMNF.ACRESCITEM,2)) VALOR_MERC
, 0 BASE_ICMS_ITM
, 0 VL_ICMS
, 0 VL_BC_ST
, 0 VL_ICMS_ST
, 0 BASE_IPI_ITM
, 0 VL_IPI_ITM
, 0.00 VL_PIS_ST, 0.00 VL_COFINS_ST
, 0 CODOBS
, 'S' EMISSAOPROPRIA
FROM NFCE NF
INNER JOIN CAIXAGERAL ITMNF ON ITMNF.COO = NF.NUMNFCE AND ITMNF.CODCAIXA = NF.CODCAIXA AND ITMNF.SEQUENCIAL = NF.SEQUENCIAL AND NF.DATA = ITMNF.DATA
LEFT JOIN CXCNPJCPF CXCLIE ON CXCLIE.COO = NF.NUMNFCE AND CXCLIE.CODCAIXA = NF.CODCAIXA AND CXCLIE.SEQUENCIAL = NF.SEQUENCIAL AND NF.DATA = CXCLIE.DATA
LEFT JOIN CLIENTES CLIE ON CLIE.CNPJ_CPF=CXCLIE.CNPJ_CPF
WHERE
NF.SITUACAO IN ('E','C')
AND ITMNF.DATA BETWEEN '2017-12-01' AND '2017-12-31'
AND ITMNF.TOTITEM > 0
GROUP BY NF.CODNFCE, CLIE.CNPJ_CPF, CLIE.CODCLIE, NF.SEQUENCIAL, NF.SITUACAO
, NF.CODCAIXA, NF.NUMNFCE, NF.CHAVEACESSO, NF.DATA, NF.DTENVIO
|
|
|
| Voltar ao Topo |
|
 |
fdsilva.desenv Novato

Registrado: Quarta-Feira, 28 de Novembro de 2012 Mensagens: 68
|
Enviada: Qui Jan 25, 2018 10:01 am Assunto: |
|
|
Pelo o que entendi, traz zerado quando tento calcular.
Se eu trouxer apenas um campo como por exemplo o TOTITEM ou DESCITEM, ele traz os valores. Agora se eu fizer um cálculo ele deixa zerado.
Saberia me dizer porque o que seria? |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Jan 25, 2018 10:19 am Assunto: |
|
|
Existe a possibilidade de algum campo envolvido no calculo estar nulo?
Se existir será necessário utilizar a função Coalesce ou outra semelhante para trocar o null do campo por 0 antes de utiliza-lo no calculo.
Espero que ajude |
|
| Voltar ao Topo |
|
 |
fdsilva.desenv Novato

Registrado: Quarta-Feira, 28 de Novembro de 2012 Mensagens: 68
|
Enviada: Qui Jan 25, 2018 10:57 am Assunto: |
|
|
Era exatamente isso. coloquei ISNULL(campo,0) e funcionou.
Obrigado. |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|