Query Relatorio

Bomm dia pessoal, tudo bom?

Estou desenvolvendo uma query para um relatorio customizado porem ele está retornando o erro "An expression of non-boolean type specified in a context where a condition is expected, near 'SH6'."

O o erro está no Left Join SH6010 SH6 com a subquery porém ainda não consegui identificalo, alguem pode dar um help, segue query em anexo:

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Executando no BD direto da error, ou da certo ? caso negativo o sintaxe da sentença pode não ser suportada pelo advpl x top conect.

Ola Rhander, isso mesmo, quando executo via BD, ele extrai tranquilo, porém via ADVPL ele traz o erro.

Olá,

A query está incorreta.

O problema está precisamente nesse trecho:


   AND SA2.D_E_L_E_T_ = ' '    
  LEFT JOIN SH6010 SH6 ON
 (
        SELECT H6_FILIAL, MAX(H6_DTAPONT)H6_DTAPONT, H6_OPERAC, H6_OP, H6_PRODUTO, H6_RECURSO, SUM(H6_QTDPROD)H6_QTDPROD 
        FROM SH6010 SH6A
        WHERE SH6A.D_E_L_E_T_ = ' '
        AND SH6A.H6_OPERAC IN     
            (
             SELECT MAX(SH6B.H6_OPERAC) H6_OPERAC
             FROM SH6010 SH6B
            WHERE SH6B.D_E_L_E_T_ = ' '
            AND SH6B.H6_OP = SH6A.H6_OP
            GROUP BY SH6B.H6_FILIAL, SH6B.H6_OP
            )
        GROUP BY H6_FILIAL,H6_OPERAC, H6_OP, H6_PRODUTO, H6_RECURSO        
     ) SH6 ON 
   SH6.H6_FILIAL = C6_FILIAL         
   AND SH6.H6_PRODUTO = C6_PRODUTO         
   AND SUBSTRING(SH6.H6_OP, 1, 6) = C6_NUMOP         
   AND SUBSTRING(SH6.H6_OP, 7, 2) = C6_ITEMOP     
  LEFT JOIN SH1T10 SH1 ON

Você faz um LEFT JOIN na SH6 e no ON dele, você faz uma subquery dando novamente o nome de SH6 e começando um novo ON.

Como não sei bem o que você pretende com essa query, mas uma possível correção é você deixar de usar a SH6 diretamente e utilizar somente a subquery:


   AND SA2.D_E_L_E_T_ = ' '    
  LEFT JOIN
 (
        SELECT H6_FILIAL, MAX(H6_DTAPONT)H6_DTAPONT, H6_OPERAC, H6_OP, H6_PRODUTO, H6_RECURSO, SUM(H6_QTDPROD)H6_QTDPROD 
        FROM SH6010 SH6A
        WHERE SH6A.D_E_L_E_T_ = ' '
        AND SH6A.H6_OPERAC IN     
            (
             SELECT MAX(SH6B.H6_OPERAC) H6_OPERAC
             FROM SH6010 SH6B
            WHERE SH6B.D_E_L_E_T_ = ' '
            AND SH6B.H6_OP = SH6A.H6_OP
            GROUP BY SH6B.H6_FILIAL, SH6B.H6_OP
            )
        GROUP BY H6_FILIAL,H6_OPERAC, H6_OP, H6_PRODUTO, H6_RECURSO        
     ) SH6 ON 
   SH6.H6_FILIAL = C6_FILIAL         
   AND SH6.H6_PRODUTO = C6_PRODUTO         
   AND SUBSTRING(SH6.H6_OP, 1, 6) = C6_NUMOP         
   AND SUBSTRING(SH6.H6_OP, 7, 2) = C6_ITEMOP         
  LEFT JOIN SH1010 SH1 ON

Pessoal, muito obrigado fiz os ajustes conforme orientado e deu o certo!