Je recherche une solution où je veux sélectionner une seule ligne d'une table DB en fonction d'une colonne qui ressemble à un drapeau.Sélectionnez une seule ligne d'une table DB en fonction d'une valeur de colonne dans ABAP Open SQL
Une table d'échantillons de DB ressemble à ceci:
C1 | C2 | C3
-----------------
A1 | N1 |
A1 | N2 | X
A1 | N3 |
A2 | N21 | X
A2 | N22 |
où C1 et C2 sont des champs clés. Dans cet exemple, A1 a 3 entrées et l'une d'elles a un drapeau vrai ('X').
Je veux sélectionner l'entrée avec le drapeau = 'X' ou le minimum de la valeur C2. Est-ce possible dans ABAP Open SQL?
Est-ce possible dans ABAP Open SQL? J'ai essayé d'utiliser l'instruction case mais ne me donne pas le résultat requis.
EDIT 1:
Dans l'exemple ci-dessus: résultat sera
A1 | N2
A2 | N21
et quand le drapeau est faux ou vide alors:
A1 | N1
A2 | N21
Salut @Jagger, merci. Mais dans ce cas, il me renvoie deux lignes => une avec flag = 'X' et une avec une valeur min car c'est une condition OU. Ce que je veux vraiment, c'est une rangée à la fin. En outre, je peux le faire par code ABAP mais je veux utiliser la requête pour les vues CDS où il ne comprend pas le code ABAP. – qwerty
La première version de la réponse l'a fait mais je l'ai changé comme il y a une heure. En ce moment, il retourne soit/ou. Je ne connais pas grand-chose des vues de la CDS mais quand je l'ai googlé, cela s'est fait avec ABAP CDS, donc je pense qu'il est possible d'utiliser ABAP là-bas. – Jagger
@ Jagger- oui cela fonctionne bien quand vous avez le drapeau mis à vrai. Mais lorsque l'indicateur est défini sur false pour toutes les entrées, il sélectionne une seule entrée avec la valeur min. Ce dont j'ai besoin dans le cas d'un drapeau vide, c'est que toutes les entrées appartenant à C1 (champ clé) ayant min (C2). J'ai essayé d'ajouter un groupe mais ça n'aide pas ma cause. Des idées? – qwerty