聚合函数以提取更多记录字段数据

时间:2016-03-15 19:11:25

标签: sql sql-server sql-server-2008 group-by aggregate-functions

我想知道当我使用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

1 个答案:

答案 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
相关问题