【问题标题】:grouping amount by date and person id按日期和人员 ID 分组金额
【发布时间】:2013-10-31 01:32:44
【问题描述】:

我需要一种方法来仅显示与每个 emp_num(person) 的最高日期相关的工资金额。

select

lge.emp_num,
lge.emp_lname,
lge.emp_fname,
lgs.sal_from,
lgs.sal_amount

from lgemployee lge
join lgsalary_history lgs
on lge.emp_num = lgs.emp_num
where lge.dept_num in ('300')
group by lge.emp_num, lge.emp_lname, lge.emp_fname, lgs.sal_from, lgs.sal_amount
order by lgs.sal_amount desc

正如您在图片中看到的那样,有几个人出现了不止一次,他们有多个付款日期。任何帮助是极大的赞赏。提前致谢。

【问题讨论】:

  • 希望你不要在这里公开人们的真实姓名和薪水。
  • @WoutervanNifterick,这些天谁只会为 95Ks 工作? :)

标签: sql date group-by sql-server-2012 where


【解决方案1】:

试试这个:

select
    lge.emp_num, lge.emp_lname, lge.emp_fname,
    lgs1.sal_from, lgs1.sal_amount
from (
    select emp_num, max(sal_from) maxDate from lgsalary_history
    group by emp_num
) lgs2
join lgsalary_history lgs1
on lgs1.emp_num = lgs2.emp_num and lgs1.sal_from = lgs2.maxDate
join lgemployee lge
on lgs1.emp_num = lge.emp_num
where lge.dept_num in ('300')
order by lgs1.sal_amount desc

【讨论】:

  • 我认为这是我想要的,但我对如何在现有代码中实现它有点困惑。
  • 哦,有两张桌子!抱歉,我没有看到 lge 和 lgs,让我重新整理一下