Ao executar a seguinte consulta SQL:
“SELECT <%varPeriodo%> AS DATA_HORA,
PENEIRA_ID,
DECODE(ABS(NVL(PEN_EST_ATUAL,0)), 0, ‘DESLIGOU’, 1, ‘LIGOU’) AS PEN_EST_ATUAL
FROM
(SELECT E3TIMESTAMP,
‘PEN1’ AS PENEIRA_ID,
MTR_PEN_PN1_EST AS PEN_EST_ATUAL,
LAG(MTR_PEN_PN1_EST, 1, -1) OVER (ORDER BY E3TIMESTAMP) AS PEN_EST_ANTERIOR
FROM HISTFLUXOEPC)
WHERE E3TIMESTAMP BETWEEN #<%varDataIni%># AND #<%varDataFim%>#
AND PEN_EST_ATUAL <> PEN_EST_ANTERIOR
ORDER BY <%varPeriodo%>,
PENEIRA_ID ASC”
Consigo obter os dados que desejo, porém no E3Browser não aparece nada. Observando os logs, encontro o seguinte erro:
100560 2015-10-06 14:55:14.722 0x1D48 0x1F58 ORACLEDBCONNECTION (‘172.25.131.73/cgora2’) ErrorLocal = OpenRecordset() Error #0x80040E14 Description:ORA-30485: missing ORDER BY expression in the window specification (Source: OraOLEDB) (SQL State: (null)) (NativeError: 30485)
E mais abaixo a String SQL sem o “ORDER BY”:
100561 2015-10-06 14:55:14.722 0x1D48 0x1F58 ADOROWSET SQLSTRING = SELECT TO_CHAR(E3TIMESTAMP,‘DD/MM/YY HH24:MI’) AS DATA_HORA,
PENEIRA_ID,
DECODE(ABS(NVL(PEN_EST_ATUAL,0)), 0, ‘DESLIGOU’, 1, ‘LIGOU’) AS PEN_EST_ATUAL
FROM
(SELECT E3TIMESTAMP,
‘PEN1’ AS PENEIRA_ID,
MTR_PEN_PN1_EST AS PEN_EST_ATUAL,
LAG(MTR_PEN_PN1_EST, 1, -1) OVER () AS PEN_EST_ANTERIOR
FROM HISTFLUXOEPC)
WHERE E3TIMESTAMP BETWEEN TO_TIMESTAMP(‘6/9/2015 14:55:08.000’,‘dd/mm/yyyy hh24:mi:ss.ff’) AND TO_TIMESTAMP(‘6/10/2015 14:55:02.000’,‘dd/mm/yyyy hh24:mi:ss.ff’)
AND PEN_EST_ATUAL <> PEN_EST_ANTERIOR
Acredito que se deva a ordenação em tempo real do browser (ao clicar nas colunas), porém preciso da SQL inalterada para utilizar a função LAG no comando SQL. (A consulta retorna o exato momento que o equipamento mudou de estado (ligado >> desligado e vice-versa).
Há alguma forma de desativar esse comportamento? Ou sugerem outra consulta que reproduza o que desejo? (Obs: Utilizo o mesmo E3Browser para exibir outras consultas de forma dinâmica, utilizando o RetrieveE3QueryFields, então não dá para usar campos fixos (os quais também apresentam erro ao tentar configurar-los no Browser).
Obrigado.