首页 > 解决方案 > 如何在 sql 中查询 Sum 值 + 最新记录日期

问题描述

我有学生表,我需要通过计算公式来收集值。

Date,Person name,status,value,mark1,mark2
01/08/2020,Andrew,New,10,32,45
07/08/2020,Andrew,New,10,44,44
22/08/2020,Andrew,New,10,55,34
15/09/2020,Mirandz,New,11,44,44
22/09/2020,Mirandz,New,11,77,55
07/09/2020,Lucaz,New,54,66,55
30/09/2020,Lucaz,New,54,23,55

在这里我想做sum(mark1)+sum(mark2)+value(where date is maximum) based on Person name

需要帮助编写 SQL 查询以获取最新值与现有列值相加的汇总值。

32+44+55+45+44+34+10

我尝试了以下查询

Select SUM(mark1)+SUM(Mark2)+Value from table where MAX(date)

我对 sql server 完全陌生!任何帮助将不胜感激。

标签: sqlsql-server

解决方案


每个名称的示例数据中的值是恒定的,因此您可以使用:

select name, sum(mark1) + sum(mark2) + value
from students
group by name, value;

如果值不是常数,您可以通过多种方式实现逻辑。一种用途first_value()

select name, sum(mark1) + sum(mark2) + most_recent_value
from (select s.*,
             first_value(value) over (partition by name order by date desc) as most_recent_value
      from students s
     ) s
group by name, most_recent_value;

推荐阅读