2017-04-21 2 views
0

Si vous me le permettez, cherchez de l'aide.OBIEE - Utiliser "IN" et "NOT IN" dans la formule de la colonne

J'ai une invite Tableau de bord variable qui, lorsqu'elle est placée sur un tableau de bord, peut être utilisée pour sélectionner plusieurs sites. Cette variable s'appelle V_SITES. Sa liste est construite en utilisant une instruction SQL qui fonctionne comme prévu.

J'ai entré ce qui suit dans une formule de colonne.

sum(Case 
When "Folder_Heading"."SITES" IN (@{V_SITES}{'Site1','Site2','Site3'}) 
Then 1 
Else 0 
End) 

Cela fonctionne à merveille lorsque je n'attribue pas la variable. Cependant, dès que j'attribue la variable, dites 'Site1', 'Site2', 'Site3').

Échec, avec le message suivant.

Error Codes: OAMP2OPY:OPR4ONWY:U9IM8TAC:U9IM8TAC:U9IM8TAC:U9IM8TAC:OI2DL65P:OI2DL65P 

SQL Issued: SELECT sum(Case When "Folder_Heading"."SITES" IN (Site1,Site2,Site3) Then 1 Else 0 End) FROM "Test_Cube" 

Je remarqué qu'il perd toutes les citations de ces importantes (Site1, Site2, Site3) ... Si cela est l'origine du problème, je ne comprends pas pourquoi cela se passe comme je l'ai dit aux V_SITES être TEXTE.

Aidez s'il vous plaît!

Merci beaucoup

P

EDIT: Après des charges de tests, je suis assez confiant que le problème est Oracle n'est pas envelopper mon texte dans des guillemets simples lors de la construction de la chaîne sql . .. Juste besoin de comprendre comment faire ...

.

Répondre

0

Il s'avère que j'ai eu le même problème, et tandis que la solution de Shakey fonctionne, la vraie solution est d'utiliser ['@'] dans la formule (Du support technique Oracle: Formule Syntaxe pour remplir une variable de présentation 2063624.1))

sum(Case 
When "Folder_Heading"."SITES" IN (@{V_SITES}['@']{'Site1','Site2','Site3'}) 
Then 1 
Else 0 
End) 
+0

Avez-vous un lien vers le document de support que vous pourriez ajouter à votre réponse, s'il vous plaît? – doublesidedstickytape

+0

Voici le lien: https://support.oracle.com/epmos/faces/DocumentDisplay?id=2063624.1 – Kristof

0

OK est convaincu que ce bogue Oracle ...

Ceci est ma solution au cas où quelqu'un d'autre vient contre cela ... Cependant, je suis très heureux d'être corrigé s'il y a une meilleure solution de contournement ou fixer !

Le problème est survenu lorsque OBIEE crée la chaîne SQL dont le texte ne qualifie pas la variable. Donc, je l'ai qualifié moi-même en modifiant la liste des valeurs disponibles dans le paramètre.

SELECT DISTINCT CHAR(39) || "TEST_CUBE"."FOLDER_HEADING"."SITES" || CHAR(39) s_1 FROM "TEST_CUBE" ORDER BY 1 ASC 

Seulement chose agaçante est que j'ai maintenant 'au début et à la fin de chaque valeur.

J'espère que cela aidera quelqu'un d'autre.