Caros especialistas, tenho a seguinte consulta onde estou usando uma subconsulta na cláusula WHERE.
select DISTINCT "FIELD1" , "FIELD2".........
from "_SYS_BIC"."system-local.bw.bw2hana/AA2"
where (case (select LOW from "SAPSR3"."AA1" where FIELD_NAME = 'EXTERNAL' )
WHEN 'ACT' then "0FISCPER"
WHEN 'BUD' then "0PLANYEAR"
WHEN 'FC' then "0FISCYEAR" end = time_slice ) * time_slice é derivado previamente com base em ACT, BUD, FC
e ("0VERSION" = '000') e "0VTYPE" = '010'
Aqui, select DISTINCT "FIELD1" é derivado sem considerar a opção de filtro CASE, apenas considerando VERSION e VTYPE.
Em seguida, o conjunto de dados retornado é unido com o resultado da condição CASE para fornecer a saída final, resultando em um despejo de memória devido ao grande volume de dados.
O requisito é reutilizar o mesmo código para diferentes filtros para diferentes tipos (0FISCPER para ACT, 0PLANYEAR para BUD e 0FISYEAR para FC). Tentei usar as seguintes sugestões mas sem sucesso:
1. NO_CALC_VIEW_UNFOLDING 2. NO_USE_ESX_SEARCH 3. CS_FILTER 4. NO_OLAP_PLAN 5. NO_CS_JOIN
O mesmo está acontecendo quando uso select * from uma função de tabela. A união é feita após a execução da consulta, excluindo as restrições retornadas da função de tabela.