Estimados expertos, tengo la siguiente consulta donde estoy usando una subconsulta en la 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 is derived previously based ACT, BUD, FC
and ("0VERSION" = '000') and "0VTYPE" = '010'
Aquí, select DISTINCT "FIELD1" se deriva sin considerar la opción de filtro CASE, sino que solo considera VERSION y VTYPE.
Luego, el conjunto de datos devuelto se une con el resultado de la condición CASE para proporcionar la salida final, lo que resulta en un volcado de memoria debido al gran volumen de datos.
El requisito es reutilizar el mismo código para diferentes filtros para diferentes tipos (0FISCPER para ACT, 0PLANYEAR para BUD y 0FISYEAR para FC). Intenté usar las siguientes sugerencias pero sin suerte:
1. NO_CALC_VIEW_UNFOLDING 2. NO_USE_ESX_SEARCH 3. CS_FILTER 4. NO_OLAP_PLAN 5. NO_CS_JOIN
Lo mismo está sucediendo cuando uso select * from una función de tabla. La unión se realiza después de la ejecución de la consulta, excluyendo las restricciones devueltas de la función de tabla.