我只想获得每个用户的第一行,在某些情况下都有3个。没有进一步的"数据方式"来限制结果。
示例查询是:
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((,但是我认为这是OpenEdge中的选择吗?如何将每行限制为唯一iDnum的1?
如果您使用的是SQL-92引擎(通过ODBC/JDBC连接(,那么您可能想使用TOP:
从" openEDGE"数据库中获取第一个100个记录(例如,选择顶部100 ..(
如果您使用的是上面答案也涵盖的4GL引擎;(
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
sql-92支持最大函数:
SELECT
"PUB"."EMPLOYEE"."FirstName",
"PUB"."EMPLOYEE"."LastName",
MAX("PUB"."COMP"."IDNum") AS "IDNum"
FROM "PUB"."EMPLOYEE"
LEFT JOIN "PUB"."COMP" ON
"PUB".EMPLOYEE"."ID" = "PUB"."COMP"."ID"
WHERE
"PUB"."EMPLOYEE"."ENDEMPLOY" IS NULL
GROUP BY
"PUB"."EMPLOYEE"."FirstName",
"PUB"."EMPLOYEE"."LastName"