¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Otimização de consultas SQL com subconsultas e filtros dinâmicos: Guia passo a passo

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 4 Vistas
0
Cargando...

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.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

2 Respuestas

0
Cargando...

Olá,

Isso funciona?

select distinct aa2~field1, ....
from aa2
inner join aa1
on field_name = 'EXTERNAL'
where "0VERSION = '000'
  and "0VTYPE" = '010
   and (   ( aa1~low = 'ACT' and 0FISCPER = time_slice )
       or  ( aa1~low = 'BUD' and 0PLANYEAR = time_slice )
       or  ( aa1~low = 'FC' and 0FISCYEAR= time_slice )
   )


Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Você tentou colocar um ELSE em sua declaração CASE?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?