SQL Server查询以选择本地最大值

SQL Server查询以选择本地最大值,sql,greatest-n-per-group,Sql,Greatest N Per Group,我有这些数据。我需要为每个人获得最低的整行美元 Amount Date Name $123 Jun 1 Peter $120 Jun 5 Peter $123 Jun 5 Paul $100 Jun 1 Paul $220 Jun 3 Paul SQl Server查询的结果应为: $120 Jun 5 Peter $100 Jun 1 Paul 在出现连接的情况下,这两行都将在此场景中显示。SQL Server 2005+版本

我有这些数据。我需要为每个人获得最低的整行美元

Amount Date    Name
$123   Jun 1   Peter
$120   Jun 5   Peter
$123   Jun 5   Paul
$100   Jun 1   Paul
$220   Jun 3   Paul
SQl Server查询的结果应为:

$120   Jun 5   Peter
$100   Jun 1   Paul
在出现连接的情况下,这两行都将在此场景中显示。

SQL Server 2005+版本 替代版本
一种在SQL Server 7及更高版本上工作的方法

select t1.* 
from(select min(amount) Minamount,name
from Yourtable
group by name) t2 
join Yourtable t1 on t1.name = t2.name
and t1.amount = t2.Minamount

有几种方法可以解决此问题,请参见此处:

对人员进行分组,以获得每个人的最低金额,然后加入表格以获得每行的日期:

select y.Amount, y.Date, y.Name
from (
  select min(Amount), Name
  from TheTable
  group by Name
) x
inner join TheTable y on x.Name = y.Name and x.Amount = y.Amount
如果一个人的金额可能存在于多个日期,请选择其中一个日期,例如第一个日期:

select y.Amount, min(y.Date), y.Name
from (
  select min(Amount), Name
  from TheTable
  group by Name
) x
inner join TheTable y on x.Name = y.Name and x.Amount = y.Amount
group by y.Amount, y.Name

这可能不是最有效的,但更简单:

SELECT DISTINCT [Name], [Date], MIN([Amount]) OVER(PARTITION BY [Name])
FROM #Table

你真的需要更好地解释这个问题。至少把你已经尝试过的内容发布出来,否则人们会认为这是一个sendtehcodez问题。每个销售员最低收入的日期是什么时候是商业问题。我试过用min$分组,但无法得到完整的结果最低和最高是相反的,这是混乱的一部分
select y.Amount, y.Date, y.Name
from (
  select min(Amount), Name
  from TheTable
  group by Name
) x
inner join TheTable y on x.Name = y.Name and x.Amount = y.Amount
select y.Amount, min(y.Date), y.Name
from (
  select min(Amount), Name
  from TheTable
  group by Name
) x
inner join TheTable y on x.Name = y.Name and x.Amount = y.Amount
group by y.Amount, y.Name
SELECT DISTINCT [Name], [Date], MIN([Amount]) OVER(PARTITION BY [Name])
FROM #Table