2017-04-26 3 views
0

Je veux obtenir seulement la rangée supérieure pour chaque utilisateur et dans certains cas il y en a 3. Je l'ai limité à seulement quelques lignes s'il y a des doublons et malheureusement il y a pas d'autre "voie de données" pour limiter les résultats.Équivalent de MAX dans progressdb (openge)

Une requête de l'échantillon est:

SELECT 
"PUB"."EMPLOYEE"."FirstName", 
"PUB"."EMPLOYEE"."LastName", 
"PUB"."COMP"."IDNum" 
FROM "PUB"."EMPLOYEE" 
JOIN "PUB"."COMP" on "PUB".EMPLOYEE"."ID" = "PUB"."COMP"."ID" 
WHERE "PUB"."EMPLOYEE"."ENDEMPLOY" is null 

Ces personnes peuvent avoir plusieurs dossiers d'emploi.

En MSSQL je ferais un MAX() mais je ne vois pas cela comme une option dans openge? Comment puis-je limiter chaque ligne à 1 d'un IDNum unique?

+0

Vous voudrez probablement trouver un moyen de le faire avec du code SQL 92, ce que comprend Progress. Si vous extrayez ce code d'un ODBC, c'est probablement la meilleure solution. Maintenant, si vous voulez faire cela avec du code 4GL, c'est probablement plus facile et plus propre pour vous, si c'est une option. – bupereira

Répondre

0
SELECT DISTINCT 
"PUB"."EMPLOYEE"."FirstName", 
"PUB"."EMPLOYEE"."LastName", 
"PUB"."COMP"."IDNum" 
FROM "PUB"."EMPLOYEE" 
JOIN "PUB"."COMP" on "PUB".EMPLOYEE"."ID" = "PUB"."COMP"."ID" 
WHERE "PUB"."EMPLOYEE"."ENDEMPLOY" is null 
+0

distinct ne fonctionnera pas dans ce scénario ... il y a plus de colonnes qui le rendent non-distinct. – DaBlue