2017-04-26 60 views
0

我只想得到每个用户的最上一行,有些情况下有三个。如果有重复,我将它限制为只有几行,不幸的是,没有进一步的“数据方式”来限制结果。maxdb在progressdb中的等效值(已打开)

样本查询:

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 

这些人可能有多个就业记录。

在MSSQL中,我会做一个MAX(),但我没有看到它作为opensge中的一个选项吗?我如何将每行限制为唯一IDNum的1?

+0

您可能想要研究一种方法来使用SQL 92代码,这是Progress可以理解的。如果你从ODBC中提取代码,这可能是最好的办法。现在如果你想用4GL代码来做到这一点,如果它是一个选项,它可能更容易,更干净。 – bupereira

回答

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在这种情况下不起作用......有更多的列使得它不是独特的。 – DaBlue