gpt4 book ai didi

sql - 根据一个月内的特定日期范围聚合多列

转载 作者:行者123 更新时间:2023-12-01 00:38:49 25 4
gpt4 key购买 nike

我需要聚合 Amounts按每月的日期范围显示。为了说明,请看下表:
发票_付款

Customer_id    Invoice_no    Invoice_date    Amount
---------------------------------------------------
10 10023 2016-07-08 60
10 10018 2016-08-04 90
11 10016 2016-07-01 110
11 10021 2016-07-05 120
12 10028 2016-07-11 10
12 10038 2016-07-31 5
您会注意到,我想根据 Customer_id 对它们进行分组。并将日期显示为开始到结束。此外,这必须仅针对每个月进行。
到目前为止,我已经尝试过以下查询:
select Customer_id, (mindate + ' to ' + maxdate) Date_Range, Amount
from (
select Customer_id, sum(Amount) Amount, min(Invoice_date) mindate, max(Invoice_date) maxdate
from Invoice_Payment
group by Customer_id
) I ;
从上面的查询我得到 Output喜欢:
Customer_id    Date_Range                    Amount
10 2016-07-08 to 2016-08-04 150
11 2016-07-01 to 2016-07-05 230
12 2016-07-11 to 2016-07-31 15
请检查这个.. SQL Fiddle Working Demo
比方说 Customer_id = 10谁在 July,2016 中有 Invoice_date和 August,2016 .我需要在特定日期范围内分别汇总该特定客户在 7 月和 8 月的所有付款。但我得到了 Amount 的总和所有 Invoice_date从上面的努力。
所需的输出:
Customer_id    Date_Range                    Amount
10 2016-07-08 to 2016-07-08 60
10 2016-08-04 to 2016-08-04 90
11 2016-07-01 to 2016-07-05 230
12 2016-07-11 to 2016-07-31 15
我怎么能克服这个?任何帮助将不胜感激。

最佳答案

你快完成了。只需添加 YEARMONTHGROUP BY .

select Customer_id, (mindate + ' to ' + maxdate) Date_Range, Amount
from (
select Customer_id,
sum(Amount) Amount, min(Invoice_date) mindate, max(Invoice_date) maxdate
from #Invoice_Payment
group by
Customer_id,
YEAR(Invoice_date),
MONTH(Invoice_date)
) I ;

关于sql - 根据一个月内的特定日期范围聚合多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38758709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com