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