我想知道当我使用Group By查询时从特定行获取数据的最佳方法是什么。真正的查询比我在这里提供的示例更复杂,因此我在Sales表上寻找除子选择之外的其他内容。
我正在使用MSSQL 2008,我希望能够从Sales记录中获取具有最大值(金额)的日期字段。
查询
uid firstName lastName
1 Sam Smith
2 Joe Brown
3 Kim Young
用户
sid Custid date amount ...
1 1 2016-01-02 100
2 3 2016-01-12 485
3 1 2016-01-22 152
4 2 2016-02-01 156
5 1 2016-02-02 12
6 1 2016-03-05 84
7 2 2016-03-10 68
SALES
uid firstName LastName amount date
1 Sam Smith 152 2016-01-22
2 Joe Brown 156 2016-02-01
3 Kim Young 485 2016-01-12
结果
None
答案 0 :(得分:0)
您发布的查询与您的金额不符,但是这样的话可以让您指向正确的方向。
with SortedResults as
(
select uid
, firstName
, lastName
, AmountFromTagetedRow
, DateFromTargetedRow
, ROW_NUMBER() over (partition by u.uid order by AmountFromTagetedRow desc) as RowNum
from users u inner join
sales s on u.uid = s.custID
group by uid
, firstName
, lastName
)
select *
from SortedResults
where RowNum = 1
order by uid