Perguntas chamada de função SQL 2008 utilizando DBO em minúsculo

Mais
7 anos 9 meses atrás #30784 por roberto.junior@maxgear.com.br
Kanaãm,

A única solução foi remover o SEGUNDO SUM da subquery, assim, tenho agora dois SUM's distintos um abatendo o resultado do outro, veja :
Select SUM(SC6.C6_QTDVEN) - IsNull((SELECT SUM(ZAA_.ZAA_QTDE) FROM ZAA010 ZAA_ WHERE ZAA_.ZAA_NUM = SC6.C6_NUM AND ZAA_.ZAA_ITEM = SC6.C6_ITEM AND ZAA_.D_E_L_E_T_ = ' '),0)-SC6.C6_QTDENT   AS QRY_CARTEIRA,
         SB1.B1_COD AS QRY_PRODUTO
   From  SC6010  SC6
   INNER JOIN SB1010 SB1
   ON    SB1.B1_COD = SC6.C6_PRODUTO
     AND SB1.B1_TIPO = 'PA'
     AND SB1.B1_MSBLQL  <> '1'
     AND SB1.D_E_L_E_T_    <> '*'
   INNER JOIN  SC5010 SC5
   ON    SC5.C5_TIPO    =  'N'
     AND SC5.C5_NUM     = '076264'
     AND SC5.C5_NUM     = SC6.C6_NUM 
     AND SC5.C5_EMISSAO >= '20160301'
     AND SC5.C5_EMISSAO <= '20160331'
     AND SC5.D_E_L_E_T_    <> '*'
   INNER JOIN  SF4010 SF4  
   ON    SF4.F4_CODIGO  =  SC6.C6_TES
     AND SF4.F4_TESVEN  = 'S'
     AND SF4.D_E_L_E_T_  <> '*'
     WHERE SC6.D_E_L_E_T_    <> '*'
     GROUP BY SB1.B1_COD, SC6.C6_NUM, SC6.C6_ITEM, SC6.C6_QTDENT
     ORDER BY QRY_PRODUTO

Dessa forma funcionou a contento, vou continuar testando outros resultados e posto aqui os finalmente pra que os demais amigos possam ser ajudados, caso necessário.

Obrigado pela atenção, sempre.
Abraço.
Roberto

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 9 meses atrás #30785 por kanaamlrr
Cara, não cheguei a testar pois não tenho todas as tabelas, mas veja se funciona dessa forma:
WITH CTE AS (
SELECT  SUM(ISNULL(ZAA_QTDE,0)) AS QTDE,ZAA_.ZAA_NUM,ZAA_.ZAA_ITEM,ZAA_.ZAA_COD
		FROM ZAA010 ZAA_, ZA9010 ZA9_ 
        WHERE  ZA9_.ZA9_CONSID = 'S'
                                                            AND ZAA_.ZAA_MOTIVO = ZA9_.ZA9_MOTIVO 
                                                            AND ZAA_.ZAA_MOTIVO = ZA9_.ZA9_MOTIVO
                                                            AND ZAA_.D_E_L_E_T_    <> '*'
                                                            AND ZA9_.D_E_L_E_T_    <> '*')
															GROUP BY ZAA_NUM, ZAA_ITEM, ZAA_COD
)

Select SUM(SC6.C6_QTDVEN-IsNull(( QTDE,0)-SC6.C6_QTDENT)   AS QRY_CARTEIRA,
         SB1.B1_COD                                                 AS QRY_PRODUTO
   From  SC6010 SC6
   INNER JOIN  SB1010 SB1
   ON    SB1.B1_COD = SC6.C6_PRODUTO
     AND SB1.B1_TIPO = 'PA'
     AND SB1.B1_MSBLQL  <> '1'
     AND SB1.D_E_L_E_T_    <> '*'
   INNER JOIN  SC5010 SC5 
   ON    SC5.C5_TIPO    =  'N'
     AND SC5.C5_NUM     = '076264'
     AND SC5.C5_NUM     = SC6.C6_NUM 
     AND SC5.C5_EMISSAO >= '20160301'
     AND SC5.C5_EMISSAO <= '20160331'
     AND SC5.D_E_L_E_T_    <> '*'
   INNER JOIN  SF4010 SF4
   ON    SF4.F4_CODIGO  =  SC6.C6_TES
     AND SF4.F4_TESVEN  = 'S'
     AND SF4.D_E_L_E_T_  <> '*'
	LEFT JOIN CTE ON 
	ZAA_NUM  = SC6.C6_NUM 
    AND ZAA_ITEM  = SC6.C6_ITEM 
    AND ZAA_COD  = SC6.C6_PRODUTO 
	WHERE SC6.D_E_L_E_T_    <> '*'
   GROUP BY SB1.B1_COD
   ORDER BY QRY_PRODUTO

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 9 meses atrás #30786 por roberto.junior@maxgear.com.br
Bom dia, Kanaãm!

Perfeito meu amigo, excelente ideia a sua que resolveu definitivamente o meu problema. Anteriormente, na query que eu postei, ainda teria que tratar os vários retornos de um mesmo produto devido ao group by por produto, pedido e etc, mas do seu jeito, recebo o sum do produto único e é só partir pro abraço.

A query ficou assim, fiz uns ajustes com recolocação de parenteses nos locais corretos:
WITH CTE AS (SELECT  SUM(ZAA_QTDE) AS RESIDUO,ZAA_.ZAA_NUM,ZAA_.ZAA_ITEM,ZAA_.ZAA_COD
		FROM ZAA010 ZAA_, ZA9010 ZA9_ 
        WHERE  ZA9_.ZA9_CONSID = 'S'
           AND ZAA_.ZAA_MOTIVO = ZA9_.ZA9_MOTIVO 
           AND ZAA_.D_E_L_E_T_    <> '*'
           AND ZA9_.D_E_L_E_T_    <> '*'
	    GROUP BY ZAA_NUM, ZAA_ITEM, ZAA_COD)

Select SUM(SC6.C6_QTDVEN-IsNull(RESIDUO,0)-SC6.C6_QTDENT)   AS QRY_CARTEIRA,
         SB1.B1_COD                                      AS QRY_PRODUTO
   From  SC6010 SC6
   INNER JOIN  SB1010 SB1
   ON    SB1.B1_COD = SC6.C6_PRODUTO
     AND SB1.B1_TIPO = 'PA'
     AND SB1.B1_MSBLQL  <> '1'
     AND SB1.D_E_L_E_T_    <> '*'
   INNER JOIN  SC5010 SC5 
   ON    SC5.C5_TIPO    =  'N'
     --AND SC5.C5_NUM     = '076264'
     AND SC5.C5_NUM     = SC6.C6_NUM 
     AND SC5.C5_EMISSAO >= '20160301'
     AND SC5.C5_EMISSAO <= '20160331'
     AND SC5.D_E_L_E_T_    <> '*'
   INNER JOIN  SF4010 SF4
   ON    SF4.F4_CODIGO  =  SC6.C6_TES
     AND SF4.F4_TESVEN  = 'S'
     AND SF4.D_E_L_E_T_  <> '*'
   LEFT JOIN CTE 
   ON   ZAA_NUM  = SC6.C6_NUM 
    AND ZAA_ITEM = SC6.C6_ITEM 
    AND ZAA_COD  = SC6.C6_PRODUTO 

WHERE SC6.D_E_L_E_T_    <> '*'
   GROUP BY SB1.B1_COD
   ORDER BY QRY_PRODUTO

Meu muito obrigado pela ajuda e suporte.
Sucesso em sua vida.
Abraço.
Roberto.

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 9 meses atrás #30791 por kanaamlrr
Beleza!!!
Valeu por compartilhar a resposta final!
Precisando é só chamar ai!
Abraço!

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 9 meses atrás #30796 por roberto.junior@maxgear.com.br
Kanaãm e aos demais amigos,

Quando se utiliza BeginSQL, a opção %noparser% permite que a string não seja avaliada pela função ChangeQuery. No exemplo desse tópico, deixando letras minúsculos (dbo) em letras maiúsculas (DBO) invalidando por exemplo a chamada de uma função.

Então, na utilização de uma string padrão de query utilizando-se o comando TcGenQry dentro do dbUseArea, evitar usar o comando ChangeQuery, e, na utilização do BeginSQL, utiliza-lo com o %noparser%, assim, o que for digitado é respeitado em case sensitive.

Uma outra coisa, percebi que o BeginSQL sem a utilização do %noparser%, escreve na query sintaxes inexistentes, criando por exemplo parenteses aonde não existe, from no meio de where e etc, uma doideira.

Para maiores informações, tdn.totvs.com/display/tec/Embedded+SQL+-+Facilitador+de+queries

Abraços.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.103 segundos
Joomla templates by a4joomla