根据最早出现的另一个字段选择一行值

Selecting a row of values based on the earliest occurrence of another field

我有一个 table,其中包含重复的模具编号:jodbom.fbompart。我希望能够 select 最早的作业编号:jomast.fjobno 和优先级编号:jomast.fschdprior 的数据行。 table 应该从 7 行变成 4 行。

http://sqlfiddle.com/#!18/d226e/1/0

    SELECT
    jodbom.fbompart as MoldNo, 
    jomast.fjobno as Job No,
    jomast.frel_dt as DueDate,
    jomast.fschdprior as Priority

    FROM jodbom 
    INNER JOIN jomast ON jodbom.fjobno =  jomast.fjobno
    INNER JOIN jodrtg ON jomast.fjobno = jodrtg.fjobno 
    INNER JOIN inmastx ON jodbom.fbompart = inmastx.fpartno
    LEFT JOIN sorels ON jomast.fsono+jomast.fkey = sorels.fsono+sorels.finumber+sorels.frelease 

    WHERE     (jomast.fstatus = 'RELEASED' OR
                          jomast.fstatus = 'OPEN') AND (jomast.flisapl = 1) AND (jodbom.fltooling = 1) AND 
                          (jodrtg.fpro_id <> '09') 

Order by jomast.frel_dt, jomast.fpriority

以下是否适合您:

SELECT
    MoldNo
    , [Job No]
    , DueDate
    , Priority
FROM

(
SELECT
    jodbom.fbompart as MoldNo, 
    jomast.fjobno as [Job No],
    jomast.frel_dt as DueDate,
    jomast.fschdprior as Priority,
    ROW_NUMBER() OVER (PARTITION BY jodbom.fbompart ORDER BY jomast.fjobno, jomast.fschdprior) R

    FROM jodbom 
    INNER JOIN jomast ON jodbom.fjobno =  jomast.fjobno
    INNER JOIN jodrtg ON jomast.fjobno = jodrtg.fjobno 
    INNER JOIN inmastx ON jodbom.fbompart = inmastx.fpartno
    LEFT JOIN sorels ON jomast.fsono+jomast.fkey = sorels.fsono+sorels.finumber+sorels.frelease 

    WHERE     (jomast.fstatus = 'RELEASED' OR
                          jomast.fstatus = 'OPEN') AND (jomast.flisapl = 1) AND (jodbom.fltooling = 1) AND 
                          (jodrtg.fpro_id <> '09') 
) Q

WHERE R = 1
Order by DueDate, Priority