【问题标题】:Sum over all dates but keep only last date总结所有日期,但只保留最后一个日期
【发布时间】:2021-03-02 16:13:33
【问题描述】:

在 SQL Server 中,我想获取按 BOOKING ID 分组的 AMOUNT 的总和,以及每个 BOOKING ID 的 DEPARTURE DATE 的最大日期作为额外列。

 BOOKING ID | DEPARTURE DATE | AMOUNT
       1       2013-04-12        100
       1       2013-04-14        120
       1       2013-04-9          90
       2       2013-04-14        100
       2       2013-04-18        150
       3       2013-04-12        100

想要的结果:

BOOKING ID  |   MAX DATE   | AMOUNT
       1       2013-04-14      310
       2       2013-04-18      250
       3       2013-04-12      100

似乎是一个简单的问题,但由于我对 SQL Server 的了解有限,我只能将临时表视为一种解决方案。

我的尝试:

SELECT
[BOOKING ID]
,MAX([DEPARTURE DATE])
,SUM(AMOUNT)
from table
GROUP BY BOOKING ID, [DEPARTURE DATE]

有什么简单的解决方案吗?

谢谢!

【问题讨论】:

  • MAXSUM 有什么问题?你尝试过什么?为什么它不起作用?
  • 我尝试按 BOOKING ID 和 DATE 对 AMOUNT 和分组求和,但随后它返回每个 DATE 的总和。我还尝试对 max(DATE) 的 AMOUNT 求和,但它并没有对其他日期求和。
  • 您通常GROUP BY 与您SELECT 相同的列,除了那些是设置函数的参数。将在这里GROUP BY [BOOKING ID]
  • 哎呀,这确实是一个非常愚蠢的问题。我应该删除问题还是保留给其他初学者?

标签: sql sql-server sum max aggregate-functions


【解决方案1】:

只使用聚合:

select booking_id, max(depature_date) as max_date, sum(amount) as amount
from mytable
group by booking_id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 2019-01-02
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多