[英]SQL Getting Date Range
我需要汇总费用,以按每月的日期范围显示。 为了说明,请看以下内容:
invoice_id usage_date cost
--------------------------------------
123 May 31, 2016 $4
150 June 01, 2016 $4
150 June 02, 2016 $4
150 June 03, 2016 $4
150 June 04, 2016 $5
150 June 05, 2016 $5
...
150 June 30, 2016 $5
240 July 01, 2016 $8
考虑到上面的数据,我想得到
range total
-----------------------------
June 01-03, 2016 $12
June 04-30, 2016 $135
如您所见,我想将它们分组并以相同的cost
添加它们,但将日期显示为开始到结束。 但这只需要每月进行一次。 在这种情况下,假设May 31, 2016
产生了$4
的费用,即使它与第二天(6月1日)的费用相同,也不会包括在内,因为它们来自不同的月份。
我觉得我需要提供更多信息,但是我不确定你们还需要什么,所以只评论您要我添加的内容。
我不知道这是否重要,但让我只添加一个查询,该查询用于生成上面提供的示例数据 。
SELECT id.invoice_id, di.usage_date, SUM(di.item_cost) AS cost
FROM detail_items di
LEFT JOIN invoice_details id
ON id.id = di.detail_id
WHERE di.group_id = 123456
GROUP BY id.invoice_id, di.usage_date
按年,月和成本进行汇总,以获取给定成本的最小和最大日期。 然后将成本乘以给定月份的总行数即可得出总和。
select to_char(mindt,'mm/dd/yyyy')||'-'||to_char(maxdt,'mm/dd/yyyy') daterange,
cnt*cost total
from (
select
cost, min(usage_date) mindt, max(usage_date) maxdt, count(*) cnt,
to_char(usage_date,'mm') usg_mth,to_char(usage_date,'yyyy') usg_yr
from tablename
group by to_char(usage_date,'mm'),to_char(usage_date,'yyyy'),cost
) t
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.