Adaptanto uma query Oracle em um componente Advanced Query

Adaptanto uma query Oracle em um componente Advanced Query

  

Tenho a seguinte query em Oracle e funciona perfeitamente:


SELECT PROCESSO_VALOR_TIPO,
       VALUE3_STR_1_GRP,
       VALUE3_STR,
       ATUALIZACAO
FROM(SELECT PV.PROCESSO_VALOR_TIPO,
            ELF.VALUE3_STR_1_GRP,
            ELF.VALUE3_STR,              
            SUM(PV.VALOR_CORRECAO + PV.VALOR_JUROS) AS ATUALIZACAO
       FROM PRC_FECHAMENTO_PRC FECHA
      LEFT JOIN PRC_FECHAMENTO_ELFV ELF ON FECHA.PRC_FECHAMENTO_PRC_ID = ELF.PRC_FECHAMENTO_PRC_ID
      LEFT JOIN PRC_FECHAMENTO_PV  PV   ON FECHA.PRC_FECHAMENTO_PRC_ID = PV.PRC_FECHAMENTO_PRC_ID
      WHERE  PRC_FECHAMENTO_ID = 604  
      GROUP BY PV.PROCESSO_VALOR_TIPO,
               ELF.VALUE3_STR_1_GRP,
               ELF.VALUE3_STR)
WHERE ATUALIZACAO > 0      
ORDER BY PROCESSO_VALOR_TIPO,
         VALUE3_STR_1_GRP,
         VALUE3_STR;



Adaptei para Advanced Query e ficou como abaixo :

SyntaxEditor Code Snippet

SELECT *
FROM(SELECT PV.[PROCESSO_VALOR_TIPO],
            ELF.[VALUE3_STR_1_GRP],
            ELF.[VALUE3_STR],              
            SUM([PV.VALOR_CORRECAO] + [PV.VALOR_JUROS]) AS ATUALIZACAO
       FROM {PRC_FECHAMENTO_PRC} FECHA
      LEFT JOIN {PRC_FECHAMENTO_ELFV} ELF ON FECHA.[PRC_FECHAMENTO_PRC_ID] = ELF.[PRC_FECHAMENTO_PRC_ID]
      LEFT JOIN {PRC_FECHAMENTO_PV}  PV   ON FECHA.[PRC_FECHAMENTO_PRC_ID] = PV.[PRC_FECHAMENTO_PRC_ID]
      WHERE  FECHA.[PRC_FECHAMENTO_ID] = 604   
      GROUP BY PV.[PROCESSO_VALOR_TIPO],
               ELF.[VALUE3_STR_1_GRP],
               ELF.[VALUE3_STR])
WHERE ATUALIZACAO > 0       
ORDER BY [PROCESSO_VALOR_TIPO],
         [VALUE3_STR_1_GRP],
         [VALUE3_STR]


Só que estou recebendo o seguinte erro :


Alguém pode me ajudar com a sintaxe correta ??

Solution

Hi Emilio.

This error most commonly occurs when you try to execute a SELECT statement and forget to the list of the columns in the SELECT statement.

Instead of having Select *, try to list the attributes you need to select for the output and add an alias to your sub-query.

Cheers,

GM

Solution

Hello Emilio.

The * should be fine, as it will work both in Oracle as well in SQL Server.
The down side of it is that you lose the potential to catch errors regarding the number and type of columns returned by the database server, that the system checks if they match your output structure.

The error code means that you are missing part of the expression. 

I don't have access to an Oracle db, but in SQL Server, you can't use a nameless sub query as source to a FROM clause inside an Advanced Query.

So, the only thing I am seeing in your query that I think is missing is the sub query name:

SELECT *
FROM (...) give_a_name_here

I also always refer to the fields using the form give_a_name_here.field, but I think it is not mandatory if the server can make the distinction between the fields.


Solved with all atributes

Thaks