Ir para conteúdo

POWERED BY:

Arquivado

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

rnet

sql

Recommended Posts

Pessoal,

 

Segue abaixo um código SQL. Meu objetivo é saber a soma da quantidade dos produtos que tiveram SAIDA (S) e DEVOLUCAO (D):

 

   SELECT           P.CODIGO,           P.DESCRICAO_COMPRA,           U.NOME AS UNIDADE,           (    SELECT                       NVL(SUM(RA.QUANTIDADE))                  FROM                       REQUISICAO_ATENDIMENTO RA                                        INNER JOIN REQUISICAO R                    ON RA.REQUISICAO = R.CODIGO                                         INNER JOIN UNID_ADM CE                    ON R.UNID_ADM_REQUISITADA  = CE.CODIGO                 WHERE                       RA.PRODUTO = :PRODUTO                   AND RA.TIPO    = 'S'                   AND R.UNID_ADM_REQUISITANTE = :UA           ) AS SA,           (    SELECT                       NVL(SUM(RA.QUANTIDADE))                  FROM                       REQUISICAO_ATENDIMENTO RA                                        INNER JOIN REQUISICAO R                                                             ON RA.REQUISICAO = R.CODIGO            INNER JOIN UNID_ADM CE                    ON R.UNID_ADM_REQUISITADA  = CE.CODIGO                 WHERE                       RA.PRODUTO = :PRODUTO                   AND RA.TIPO    = 'D'                   AND R.UNID_ADM_REQUISITANTE = :UA            ) AS DR      FROM           PRODUTO PINNER JOIN UNIDADE U        ON P.UNIDADE_COMPRA = U.CODIGO     WHERE           P.CODIGO = :PRODUTO  ORDER BY           P.DESCRICAO_COMPRA

O problema é: Quando eu coloco essa linha "AND R.UNID_ADM_REQUISITANTE :UA"

 

o valor retornado é 0 (zero), mas quando eu tiro esta linha, o valor está correto.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega,É Oracle?Não sei se entendi o requisito:

SELECT          P.CODIGO,          P.DESCRICAO_COMPRA,          U.NOME AS UNIDADE,          (    SELECT                      NVL(SUM(RA.QUANTIDADE))                 FROM REQUISICAO_ATENDIMENTO RA                                       INNER JOIN REQUISICAO R ON RA.REQUISICAO = R.CODIGO                                        INNER JOIN UNID_ADM CE ON R.UNID_ADM_REQUISITADA  = CE.CODIGO                WHERE RA.PRODUTO = :PRODUTO AND RA.TIPO    IN ('S','D') AND R.UNID_ADM_REQUISITANTE = :UA          ) AS QTDE     FROM PRODUTO PINNER JOIN UNIDADE U ON P.UNIDADE_COMPRA = U.CODIGO    WHERE P.CODIGO = :PRODUTO ORDER BY P.DESCRICAO_COMPRA 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega,É Oracle?Não sei se entendi o requisito:

<font face="verdana">SELECT          P.CODIGO,          P.DESCRICAO_COMPRA,          U.NOME AS UNIDADE,          (    SELECT                      NVL(SUM(RA.QUANTIDADE))                 FROM REQUISICAO_ATENDIMENTO RA                                       INNER JOIN REQUISICAO R ON RA.REQUISICAO = R.CODIGO                                        INNER JOIN UNID_ADM CE ON R.UNID_ADM_REQUISITADA  = CE.CODIGO                WHERE RA.PRODUTO = :PRODUTO AND RA.TIPO    IN ('S','D') AND R.UNID_ADM_REQUISITANTE = :UA          ) AS QTDE     FROM PRODUTO PINNER JOIN UNIDADE U ON P.UNIDADE_COMPRA = U.CODIGO    WHERE P.CODIGO = :PRODUTO ORDER BY P.DESCRICAO_COMPRA </font> 

É Oracle?

É Firebird.Eu não disse os requisitos... Eu preciso saber a quantidade de SAIDAS e a quantidade de DEVOLUCOES ocorridas por uma Unidade Administrativa (Departamento). Eu precisaria do período também, mas não coloquei aqui para não complicar... ok?Da maneira que você colocou funciona, mas não atenderia os requisitos, colega. Alguma outra dica?[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe-me, mas não entendi como seria este Agrupamento, pois eu preciso diferenciar os tipos, já que a tabela é a mesma (REQUISICAO_ATENDIMENTO -TIPO ('S', 'D')). Não consegui vizualizar um agrupamento... Seria possível postar um código como exemplo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

   SELECT           P.CODIGO,           P.DESCRICAO_COMPRA,           U.NOME AS UNIDADE,           (    SELECT                       NVL(SUM(RA.QUANTIDADE))                  FROM                       REQUISICAO_ATENDIMENTO RA            INNER JOIN REQUISICAO R                    ON RA.REQUISICAO = R.CODIGO            INNER JOIN EMPRESA_UA EUA                    ON R.UNID_ADM_REQUISITANTE = EUA.UNID_ADM                 WHERE                       RA.PRODUTO = P.CODIGO                   AND RA.TIPO    = 'S'           ) AS SA,           (    SELECT                       NVL(SUM(RA.QUANTIDADE))                  FROM                       REQUISICAO_ATENDIMENTO RA            INNER JOIN REQUISICAO R                    ON RA.REQUISICAO = R.CODIGO            INNER JOIN EMPRESA_UA EUA                    ON R.UNID_ADM_REQUISITANTE = EUA.UNID_ADM                 WHERE                       RA.PRODUTO = P.CODIGO                   AND RA.TIPO    = 'D'            ) AS DR      FROM           REQUISICAO_ATENDIMENTO RA                            INNER JOIN REQUISICAO R        ON RA.REQUISICAO = R.CODIGO                             INNER JOIN PRODUTO P        ON RA.PRODUTO = P.CODIGOINNER JOIN UNIDADE U        ON P.UNIDADE_COMPRA = U.CODIGO     WHERE           P.CODIGO                IN (284, 285)       AND R.UNID_ADM_REQUISITANTE = :UA1       AND R.UNID_ADM_REQUISITADA  = :UA2       AND CAST(RA.DATA AS DATE) BETWEEN '01/26/2005' AND '01/26/2005'  GROUP BY           P.CODIGO,           P.DESCRICAO_COMPRA,           U.NOME  ORDER BY           P.DESCRICAO_COMPRA

Valeu mesmo Aroldo! Cara, se não fosse o Fórum eu ficaria o resto da semana e não conseguiria... Obrigado mesmo!

 

Só uma idéia, Aroldo.... Particularmente, você teria uma tabela única de MOVIMENTAÇÃO, na qual receberia todos os dados inerentes a SAIDAS, ENTRADAS, CORRECOES de ESTOQUE, ou faria separado, como eu fiz, REQUISICAO_ATENDIMENTO, ENTRADA_PRODUTO, ENTRADA_DEVOLUCAO, ESTOQUE_CORRECAO...

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega,Eu faço em tabelas separadas, até para facilitar o entendimento do modelo, apesar de poder descrever auto-relacionamento, bem como, temos tabelas com milhões (IBM DB2-AS/400) de registros que, juntas só iriam degradar o acesso aos dados.

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.