Je veux une logique dans ma requête où lorsque l'invite 2 (: 2) reçoit une valeur ou n'est pas vide, le champ STRM sera automatiquement égal au champ FIRST_TERM_VALID
, sinon si: 2
est noir alors le champ STRM
vaut any.
C'est la partie du code:
AND A.STRM LIKE ( CASE WHEN :2 <> ' ' THEN G.FIRST_TERM_VALID ELSE '%' END )
Le problème est avec cette partie de ma requête, je ne peux plus extraire de résultats.
3 Réponses :
Votre logique peut être beaucoup plus simple:
Soit : 2
est nul, soit vérifiez si A.STRM = G.FIRST_TERM_VALID
AND (:2 IS NULL OR A.STRM = G.FIRST_TERM_VALID)
Vous supposez que BLANK est NULL, ce qui n'est pas vrai sur PeopleSoft. Le blanc est un espace.
@Walucas Je ne suppose rien. J'ai testé à la fois SELECT * FROM PS_PERSONAL_DATA A WHERE (: 1 IS NULL)
et SELECT * FROM PS_PERSONAL_DATA A WHERE (: 1 = '')
. Les résultats ne sont renvoyés que dans le premier cas. Vérifié à la fois dans PSQuery et directement dans db.
Comment avez-vous créé l'invite dans la requête ps? Quels outils êtes-vous? J'ai eu des résultats différents ici
@Walucas Je suis donc celui qui suppose les choses, mais vous ne pouvez même pas faire une requête avec une invite? Je suis sur 8.56.08 et les invites sont créées dans l'onglet `` Invites '' de PSQuery ...
Je sais, ce n'est pas ce que je voulais dire ... J'ai supposé que vous avez supposé, désolé pour cela ... mon message ici se comporte différemment, c'est pourquoi j'ai demandé
BTW, j'ai pu le simuler sur 8.56 ..... sa nullité son apport, donc vous avez raison
Si prompt: 2 est vide, il est plus probable qu'il soit nul. Cela peut être ce que vous recherchez:
and (:2 is null or :2 = ' ' or a.strm = g.first_term_valid)
Si vous souhaitez également tester le blanc, essayez ceci:
and (:2 is null or a.strm = g.first_term_valid)
N'hésitez pas pour ajouter des expressions. Le motif doit être visible.
Créez une expression sur PS Query et utilisez-la comme un critère
AND A.STRM = CASE WHEN: 2 EST NULL PUIS A.STRM ELSE G.FIRST_TERM_VALID END