1
votes

Utilisation de cas sur PS Query

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.


0 commentaires

3 Réponses :


2
votes

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)


6 commentaires

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



0
votes

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.


0 commentaires

0
votes

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


0 commentaires