Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wilke1

subselect não consigo fazer

Recommended Posts

ola pessoal não estou consiguindo fazer essa subselect ela dar erro de missing expression, ja mudei ,algumas coisas mas continuaSELECTCOUNT(*) NU_PEDIDO,PT.CD_LOJA_ORIGEM,PT.CD_LOJA_DESTINO,PT.DT_PEDIDO_TRANSFERENCIA,PT.FL_SITUACAO,SUM(PT.VL_PEDIDO) VL_PEDIDO,----(SELECT SUM(TP.QT_PESO_BRUTO * IP.QT_PEDIDA*TP.QT_POR_EMBALAGEM) as PESO-----FROM TB_PRODUTO TP,TB_ITEM_PEDIDO_TRANSFERENCIA IP----- WHERE TP.CD_PRODUTO=IP.CD_PRODUTO )FROM TB_PEDIDO_TRANSFERENCIA PTWHEREPT.CD_LOJA_ORIGEM='030' ANDPT.DT_PEDIDO_TRANSFERENCIA BETWEEN FN_CONV_DATA('05/12/2006') ANDFN_CONV_DATA('05/12/2006') ANDPT.FL_SITUACAO='E' ANDPT.CD_LOJA_DESTINO LIKE '034'GROUP BYPT.CD_LOJA_ORIGEM,PT.CD_LOJA_DESTINO,PT.DT_PEDIDO_TRANSFERENCIA,PT.FL_SITUACAO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você comentou as linhas e deixou a , antes do comentário. Daí ficaria...

...SUM(PT.VL_PEDIDO) VL_PEDIDO,FROM...

E isto gera um erro de missing expression. Retirei os comentários e identei seu código. Assim deve funcionar:

 

SELECT  COUNT(*) NU_PEDIDO,  PT.CD_LOJA_ORIGEM,  PT.CD_LOJA_DESTINO,  PT.DT_PEDIDO_TRANSFERENCIA,  PT.FL_SITUACAO,  SUM(PT.VL_PEDIDO) VL_PEDIDOFROM  TB_PEDIDO_TRANSFERENCIA PTWHERE  PT.CD_LOJA_ORIGEM='030'  AND PT.DT_PEDIDO_TRANSFERENCIA BETWEEN FN_CONV_DATA('05/12/2006') AND FN_CONV_DATA('05/12/2006')  AND PT.FL_SITUACAO='E'  AND PT.CD_LOJA_DESTINO LIKE '034'GROUP BY  PT.CD_LOJA_ORIGEM,  PT.CD_LOJA_DESTINO,  PT.DT_PEDIDO_TRANSFERENCIA,  PT.FL_SITUACAO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você comentou as linhas e deixou a , antes do comentário. Daí ficaria...

...SUM(PT.VL_PEDIDO) VL_PEDIDO,FROM...
E isto gera um erro de missing expression. Retirei os comentários e identei seu código. Assim deve funcionar:
SELECT  COUNT(*) NU_PEDIDO,  PT.CD_LOJA_ORIGEM,  PT.CD_LOJA_DESTINO,  PT.DT_PEDIDO_TRANSFERENCIA,  PT.FL_SITUACAO,  SUM(PT.VL_PEDIDO) VL_PEDIDOFROM  TB_PEDIDO_TRANSFERENCIA PTWHERE  PT.CD_LOJA_ORIGEM='030'  AND PT.DT_PEDIDO_TRANSFERENCIA BETWEEN FN_CONV_DATA('05/12/2006') AND FN_CONV_DATA('05/12/2006')  AND PT.FL_SITUACAO='E'  AND PT.CD_LOJA_DESTINO LIKE '034'GROUP BY  PT.CD_LOJA_ORIGEM,  PT.CD_LOJA_DESTINO,  PT.DT_PEDIDO_TRANSFERENCIA,  PT.FL_SITUACAO
não deu certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teste...

 

SELECT  COUNT(*) NU_PEDIDO,  PT.CD_LOJA_ORIGEM,  PT.CD_LOJA_DESTINO,  PT.DT_PEDIDO_TRANSFERENCIA,  PT.FL_SITUACAO,  SUM(PT.VL_PEDIDO) VL_PEDIDO,  SUM(SELECT SUM(TPROD.QT_PESO_BRUTO * IP.QT_PEDIDA * TPROD.QT_POR_EMBALAGEM)	  FROM TB_PRODUTO TPROD,TB_ITEM_PEDIDO_TRANSFERENCIA IP	  WHERE TPROD.CD_PRODUTO=IP.CD_PRODUTO AND IP.NU_PEDIDO_TRANSFERENCIA = PT.NU_PEDIDO_TRANSFERENCIA  ) PESOFROM  TB_PEDIDO_TRANSFERENCIA PTWHERE  PT.CD_LOJA_ORIGEM='030'  AND PT.CD_LOJA_DESTINO='034'  AND PT.DT_PEDIDO_TRANSFERENCIA BETWEEN FN_CONV_DATA('05/12/2006') AND FN_CONV_DATA('05/12/2006')  AND PT.FL_SITUACAO='E'GROUP BY  PT.CD_LOJA_ORIGEM,  PT.CD_LOJA_DESTINO,  PT.DT_PEDIDO_TRANSFERENCIA,  PT.FL_SITUACAO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teste...

SELECT  COUNT(*) NU_PEDIDO,  PT.CD_LOJA_ORIGEM,  PT.CD_LOJA_DESTINO,  PT.DT_PEDIDO_TRANSFERENCIA,  PT.FL_SITUACAO,  SUM(PT.VL_PEDIDO) VL_PEDIDO,  SUM(SELECT SUM(TPROD.QT_PESO_BRUTO * IP.QT_PEDIDA * TPROD.QT_POR_EMBALAGEM)	  FROM TB_PRODUTO TPROD,TB_ITEM_PEDIDO_TRANSFERENCIA IP	  WHERE TPROD.CD_PRODUTO=IP.CD_PRODUTO AND IP.NU_PEDIDO_TRANSFERENCIA = PT.NU_PEDIDO_TRANSFERENCIA  ) PESOFROM  TB_PEDIDO_TRANSFERENCIA PTWHERE  PT.CD_LOJA_ORIGEM='030'  AND PT.CD_LOJA_DESTINO='034'  AND PT.DT_PEDIDO_TRANSFERENCIA BETWEEN FN_CONV_DATA('05/12/2006') AND FN_CONV_DATA('05/12/2006')  AND PT.FL_SITUACAO='E'GROUP BY  PT.CD_LOJA_ORIGEM,  PT.CD_LOJA_DESTINO,  PT.DT_PEDIDO_TRANSFERENCIA,  PT.FL_SITUACAO
se alguem poder ajudar eu agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser meio complicado, mas não tem como você disponibilizar a sua base de dados para que seja possivel o teste dos comandos SQL ?

oi marcio eu ja tentei fazer posiveis relacionamento, mas tá dificil .voce conhece um pouco oracle , essa select ela pucha do banco oracle.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trablho com oracle... fiz SQL já do tipo... terei de ver então em casa com mais calma o que pode estar acontecendo...

Marcio vou ficar aguardando a sua ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhei e revisei o comando, a princípio esta correto da forma que o Vinicius havia passado, no caso poderia colocar um exemplo do que esta mostrando e o que deveria de aparecer ? Para se ter idéia do comando que esta gerando a divergência...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhei e revisei o comando, a princípio esta correto da forma que o Vinicius havia passado, no caso poderia colocar um exemplo do que esta mostrando e o que deveria de aparecer ? Para se ter idéia do comando que esta gerando a divergência...

oi marcio a dica que o venicios passou, ela dar esse error 'missing expression'.agora essa select sem subselec, ela traz o valor do pedido triplicado ex: nu_pedidos cd_loja_origem cd_loja_destino dt_pedido_transferencia fl_situacao peso 153 030 034 05/12/2006 e sendo que tinha que trazer os nu_pedidos dessa mesma data a quantidade de 34 e não 153 ,por isso que eu acho que tem que ser usado uma especie de subquery, por que a tabela tb_produto, ela se relaciona com a tb_item_pedido_transferencia pelo cd_produto, agora a tb_pedido_transferencia, ela se relaciona com tb_item_pedido_transferencia pelo nu_pedido_transferencia ,voce entendeu ,mas se voce quiser eu te passo a estrutura dessas tabelas

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola pessoal não estou consiguindo fazer essa subselect ela dar erro de missing expression, ja mudei ,algumas coisas mas continuaSELECTCOUNT(*) NU_PEDIDO,PT.CD_LOJA_ORIGEM,PT.CD_LOJA_DESTINO,PT.DT_PEDIDO_TRANSFERENCIA,PT.FL_SITUACAO,SUM(PT.VL_PEDIDO) VL_PEDIDO,----(SELECT SUM(TP.QT_PESO_BRUTO * IP.QT_PEDIDA*TP.QT_POR_EMBALAGEM) as PESO-----FROM TB_PRODUTO TP,TB_ITEM_PEDIDO_TRANSFERENCIA IP----- WHERE TP.CD_PRODUTO=IP.CD_PRODUTO )FROM TB_PEDIDO_TRANSFERENCIA PTWHEREPT.CD_LOJA_ORIGEM='030' ANDPT.DT_PEDIDO_TRANSFERENCIA BETWEEN FN_CONV_DATA('05/12/2006') ANDFN_CONV_DATA('05/12/2006') ANDPT.FL_SITUACAO='E' ANDPT.CD_LOJA_DESTINO LIKE '034'GROUP BYPT.CD_LOJA_ORIGEM,PT.CD_LOJA_DESTINO,PT.DT_PEDIDO_TRANSFERENCIA,PT.FL_SITUACAO

RESOLVIDOPESSOAL FOI FEITO ASSIM, E DEU CERTO OBRIGADO A TODOSSELECT CD_LOJA_ORIGEM,CD_LOJA_DESTINO,DT_PEDIDO_TRANSFERENCIA,FL_SITUACAO,SUM(NU_PEDIDOS)NU_PEDIDOS,SUM(VL_PEDIDO)VL_PEDIDO,SUM(PESO)PESOFROM( SELECT COUNT(1)NU_PEDIDOS,PT.CD_LOJA_ORIGEM,PT.CD_LOJA_DESTINO,PT.DT_PEDIDO_TRANSFERENCIA,PT.FL_SITUACAO, SUM(PT.VL_PEDIDO)VL_PEDIDO,0 PESO FROM TB_PEDIDO_TRANSFERENCIA PT WHERE PT.CD_LOJA_ORIGEM='030' AND PT.DT_PEDIDO_TRANSFERENCIA BETWEEN FN_CONV_DATA('05/12/2006') AND FN_CONV_DATA('05/12/2006') AND PT.FL_SITUACAO='E' AND PT.CD_LOJA_DESTINO LIKE '034' GROUP BY PT.CD_LOJA_ORIGEM,PT.CD_LOJA_DESTINO,PT.DT_PEDIDO_TRANSFERENCIA,PT.FL_SITUACAO UNION ALL SELECT 0 NU_PEDIDOS, PT.CD_LOJA_ORIGEM,PT.CD_LOJA_DESTINO,PT.DT_PEDIDO_TRANSFERENCIA,PT.FL_SITUACAO, 0 VL_PEDIDO,SUM(TP.QT_PESO_BRUTO*IP.QT_PEDIDA*TP.QT_POR_EMBALAGEM)PESO FROM TB_PEDIDO_TRANSFERENCIA PT,TB_ITEM_PEDIDO_TRANSFERENCIA IP,TB_PRODUTO TP WHERE PT.CD_LOJA_ORIGEM='030' AND PT.DT_PEDIDO_TRANSFERENCIA BETWEEN FN_CONV_DATA('05/12/2006') AND FN_CONV_DATA('05/12/2006')AND PT.FL_SITUACAO='E'AND PT.CD_LOJA_DESTINO LIKE '034' AND TP.CD_PRODUTO=IP.CD_PRODUTO AND PT.NU_PEDIDO_TRANSFERENCIA=IP.NU_PEDIDO_TRANSFERENCIA GROUP BY PT.CD_LOJA_ORIGEM,PT.CD_LOJA_DESTINO,PT.DT_PEDIDO_TRANSFERENCIA,PT.FL_SITUACAO ) GROUP BY CD_LOJA_ORIGEM,CD_LOJA_DESTINO,DT_PEDIDO_TRANSFERENCIA,FL_SITUACAO

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.