Sql 如何生成聚合的最新版本?
嘿,我的社区 我有一张销售情况表,如下所示Sql 如何生成聚合的最新版本?,sql,sql-server,Sql,Sql Server,嘿,我的社区 我有一张销售情况表,如下所示 Customer Revenue State Date David $100 NY 2016-01-01 David $500 NJ 2016-01-03 Fred $200 CA 2016-01-01 Fred $200 C
Customer Revenue State Date
David $100 NY 2016-01-01
David $500 NJ 2016-01-03
Fred $200 CA 2016-01-01
Fred $200 CA 2016-01-02
我正在写一个简单的客户收入查询。输出返回如下结果:
David $600
Fred $400
我现在要做的是添加最新购买日期的行
预期结果:
David $600 2016-01-03
Fred $400 2016-01-02
我希望保持SQL代码尽可能干净。我还希望避免连接到新查询,因为此查询可能会变得复杂。有什么办法吗 您应该计算团队的总收入,并获得最大日期 大概是这样的:
SELECT
Customer, SUM(Revenue) as RevenueSum, MAX([Date]) as [Date]
FROM Sales
GROUP BY Customer
您应该计算组中的总收入,并获得最大日期 大概是这样的:
SELECT
Customer, SUM(Revenue) as RevenueSum, MAX([Date]) as [Date]
FROM Sales
GROUP BY Customer
我想这是你需要的
按客户从销售组中选择客户、金额(收入)、最大(日期)我想这正是您需要的
按客户从销售组中选择客户、总和(收入)、最大(日期)获取收入总和以及从记录中获取最大日期信息的一种方法是使用行数()和总和()窗口函数
SUM()OVER()
将客户的金额应用于每一行,而row_NUMBER()OVER()
将按客户和日期描述为每一行提供订单号
将其放入子查询中,并仅选择行数为1(最大日期)的记录
获取收入和以及从记录中获取最大日期信息的一种方法是使用ROW_NUMBER()和SUM()窗口函数
SUM()OVER()
将客户的金额应用于每一行,而row_NUMBER()OVER()
将按客户和日期描述为每一行提供订单号
将其放入子查询中,并仅选择行数为1(最大日期)的记录
如果我想要最新的状态呢?最新的状态+最新的日期@哈姆雷特Hakobyan@MichaelHwang这是另一个问题。创建具有适当标题和描述的问题。你可以添加新问题的链接,我可以很容易地找到它。如果我想要最新状态呢?最新状态+最新日期@哈姆雷特Hakobyan@MichaelHwang这是另一个问题。创建具有适当标题和描述的问题。你们可以添加新问题的链接,我可以很容易地找到它。查找top-n-per-group或Best-n-per-group。有关SQL Server,请参见。请记住,如果答案有帮助,您可以接受。请查找top-n-per-group或Best-n-per-group。有关SQL Server,请参见。请记住,如果答案有帮助,您可以接受。