【问题标题】:Finding the id from the highest date when multiple dates are present当存在多个日期时,从最高日期查找 id
【发布时间】:2013-03-28 10:05:22
【问题描述】:

当我运行这个查询时,我得到:

SELECT DISTINCT r2.ApplicationBK,
                max(r2.DatumApplication) maxdatum,
                p.Name
FROM FCT_Recruitment r2,
     DIM_WervingsProject wp,
     DIM_Persoon p
WHERE r2.WervingsProjectID = wp.WervingsProjectID
  AND r2.PersoonID=p.PersoonID
GROUP BY ApplicationBK,
         p.name

名字在TALBLE DIM_PERSOON P
“ApplicationBK”位于 DIM_Wervingsproject
并且所有日期(DatumAppliocation)都站在 FCT_Recruitment 中

BK  -  Date - Name 
012    20-03-1999  - name1 
023    21-03-1999  - name1 
033    22-03-1999  - name1 
112    20-03-1990  - name2 
123    20-03-1999  - name2 
133    20-03-1990  - name2

但我需要每个名字的最高日期。所以每个名字在“名字列”中只能出现一次,并带有相应的 id (ApplicationBK) 和日期。我不需要休息。

当这不起作用时,我尝试了其他方法......

SELECT WervingsprojectBK,
       r.ApplicationBK,
       p.Name,
       count(*) number,upper(r.StatusWP) status,
                       upper(r.StatusApplication)statusdetail,
                       r.DateApplication 
FROM FCT_Recruitment AS r,
     DIM_WervingsProject wp,
     DIM_Persoon p
INNER JOIN
  (SELECT DISTINCT r2.ApplicationeBK,
                   max(r2.DateApplication) maxdatum
   FROM FCT_Recruitment r2,
        DIM_WervingsProject wp,
        DIM_Persoon p
   WHERE r2.WervingsProjectID=wp.WervingsProjectID
     AND r2.PersoonID=p.PersoonID
   GROUP BY ApplicationBK) AS r2 ON (r.ApplicationBK=r2.ApplicationBK
                                     AND r.DateApplication=r2.maxdatum)
GROUP BY WervingsprojectBK,
         r.ApplicationBK,
         p.Naam,
         r.StatusApplication,
         r.StatusWP
ORDER BY 5

但是我得到了这些错误..:

Msg 4104, Level 16, State 1, Line 3 多部分标识符 无法绑定“r.ApplicationBK”。 消息 4104,第 16 级,状态 1、3号线 多部分标识符“r.DateApplication”可以 不受约束。

你能帮帮这个新手吗.. 谢谢。

【问题讨论】:

    标签: sql date inner-join max multiple-tables


    【解决方案1】:

    试试这个:

    select 
      r2.ApplicationBK, 
      r22.maxdatum, 
      p.Name
    from FCT_Recruitment r2
    INNER JOIN
    (
      SELECT WervingsProjectID, max(r2.DatumApplication) maxdatum
      FROM FCT_Recruitment
      GROUP BY WervingsProjectID
    ) AS r22  ON r2.WervingsProjectID = r22.WervingsProjectID
             AND r2.DatumApplication  = r22.maxdatum
    INNER JOIN DIM_WervingsProject AS wp ON r2.WervingsProjectID = wp.WervingsProjectID
    INNER JOIN DIM_Persoon         AS p  ON r2.PersoonID         = p.PersoonID;
    

    【讨论】:

    • 好的,没有错误,但我仍然有好几次相同的名字,我只需要日期最高的名字。
    【解决方案2】:

    试试这个。并更改列名:

    SELECT max(r.AllDate),r.ProjectID,p.name 
    FROM FCT_Recruitment r,DIM_Wervingsproject pr, DIM_PERSOON p 
    where p.PID=r.PID and r.ProjectId=pr.ProjectID 
    group by r.PID;
    

    【讨论】:

      猜你喜欢
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 2019-06-21
      相关资源
      最近更新 更多