【问题标题】:How to get the MAX result even if the MAX is different即使MAX不同,如何获得MAX结果
【发布时间】:2013-09-04 17:29:26
【问题描述】:

我有一个代码,我在其中提取语言知识,每个员工都有一个计划年,他们并不是每年都完成它们,为了获得他们最近的一个,我使用 MAX 作为计划年。现在的标准之一是他们是否愿意在海上移动,出现的问题是,它将提出他们最近的“是”和“最近的”“否”,我只需要他们最近的计划年份,无论是或否,我我很难解决这个问题。代码如下:

SELECT Employee_ID, Accept_International_Assignment, MAX(Plan_Year) AS Expr1
FROM  dbo.v_sc08_CD_Employee_Availabilities
GROUP BY Employee_ID, Accept_International_Assignment    

【问题讨论】:

  • 您使用的是哪个 DBMS?后格雷斯?甲骨文?
  • 我把它缩短到我遇到问题的部分,我一开始不小心把整个东西都放了。
  • 我正在使用 SQL Server

标签: sql sql-server


【解决方案1】:

我怀疑这将比公认的答案更有效...

;WITH x AS 
(
  SELECT Employee_ID, Accept_International_Assignment, Plan_Year,
    rn = ROW_NUMBER() OVER (PARTITION BY Employee_ID ORDER BY Plan_Year DESC)
  FROM dbo.v_sc08_CD_Employee_Availabilities -- who comes up with these names?
)
SELECT Employee_ID, Accept_International_Assignment, Plan_Year
  FROM x WHERE rn = 1;

【讨论】:

    【解决方案2】:
    SELECT a.Employee_ID, a.Accept_International_Assignment, a.Plan_Year
    FROM  dbo.v_sc08_CD_Employee_Availabilities a
    INNER JOIN (SELECT Employee_ID, MAX(Plan_Year) maxPlanYear
                from dbo.v_sc08_CD_Employee_Availabilities
                GROUP BY Employee_ID) m
       ON a.Plan_Year = m.maxPlanYear AND a.Employee_ID = m.Employee_ID
    

    【讨论】:

      【解决方案3】:

      我不确定您是否只想要 Raphael 发布的最新决定和年份,或者您是否想要是和否但始终为该员工提供 Max 计划年份。

      这是一个查询是和否的查询,但 Max plan year 始终是员工的最大值。

      select main.Employee_ID, Accept_International_Assignment, Expr1
      from (
          SELECT Employee_ID, Accept_International_Assignment
          FROM  @v_sc08_CD_Employee_Availabilities
          GROUP BY Employee_ID, Accept_International_Assignment  
      ) main
      inner join
      (
       select Employee_ID, MAX(Plan_Year) as Expr1
       from @v_sc08_CD_Employee_Availabilities
       group by Employee_ID) empPlanYear
      on main.Employee_ID = empPlanYear.Employee_ID
      

      【讨论】:

        【解决方案4】:

        你需要一个关于 max() 的子查询并加入它。

        SQL Group by & Max

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-10
          相关资源
          最近更新 更多