有没有办法选择列表中最大/最大/最新的交易?

问题描述 投票:0回答:1

如果我有一组交易,并且想要挑选出最大或最新交易的完整交易,我如何识别并提取该交易。例如给定一个像

这样的表
身份证 商品ID 数量 价值 翻译日期 客户ID
11254 a123 10 123.60 2021年10月1日 FH12AH
11236 a124 1 1123.60 2021年1月15日 FH12AH
1123 a129 9 23.10 2021年1月15日 FH12AH
11237 a125 5 213.10 2021年1月15日 FH12AH
2134 a123 3 37.08 2021年1月15日 QB876G
3412 b987 31 123.60 2021年1月23日 QB876G
4321 jp34 5 123.60 2021年1月30日 JH8765
4322 a123 51 1123.60 2021/02/01 TT6548

我如何提取整个交易

  1. 每个客户的最高价值交易

  2. 每种产品的最高价值交易

我可以编写一个查询来提取每个客户最高交易价值的日期,如下所示:

Select CustID, max(value) as highest_value
from Table
Group By CustID

但是要提取整个事务,我需要将其作为子查询连接到原始表,即

select t.* from Table t
Join (Select CustID, max(value) as highest_value
from Table
Group By CustID) sq
on t.CustID = sq.CustID 
and t.value = sq.highest_value

是否有更简单的结构来完成相同的工作?

sql sql-server join
1个回答
1
投票
SELECT X.* FROM
(
    SELECT T.*,
     ROW_NUMBER()OVER(PARTITION BY T.CustID ORDER BY T.VALUE DESC)AS XCOL 
     FROM YOUR_TABLE AS T
) X WHERE X.XCOL=1

每个客户的最高价值交易

© www.soinside.com 2019 - 2024. All rights reserved.