从日期列分组月份并为所有月份添加数量

时间:2017-02-10 15:04:14

标签: sql

我有一张名为' Orders'与' entry_date' [datatype:datetime2(7)]作为订单生成的日期。对应于此日期,我有一个名为' order_amt' [datatype:money]存储订单所用的金额。该表还有“退款日期”和“退款日期”。 [datatype:datetime2(7)]和' refund_amt'存储退款的日期和金额。 我必须为2015年的每个月选择总收入[order_amt-refund_amt]。

P.S:我是SQL新手,也是Stackoverflow。

2 个答案:

答案 0 :(得分:0)

据我所知,

datetime2是SQL Server类型。如果是,那么您可以尝试以下查询:

DECLARE @start_date Date, @end_date DATE
SET @start_date = '2015-01-01'
SET @end_date = '2015-12-31'

SELECT DATEPART(MONTH, entry_date) AS month,
       SUM(order_amt - refund_amt) AS total_revenue
FROM Orders
WHERE entry_date >= @start_date AND entry_date <= @end_date
GROUP BY DATEPART(MONTH, entry_date)

注意: DATEPART(MONTH, entry_date)entry_date列中提取月份,这是您要用于分组的内容。 @start_date@end_date变量指定了entry_date使用的边界。

答案 1 :(得分:0)

试试这个

select datepart(month,entry_Date) as month, 
sum(order_amt-coalesce(refund_amt,0))) as total_amount
from orders
where entry_date>='20150101' and entry_date<'20160101' 
group by datepart(month,entry_Date)