我需要计算收入的当年和前一年,我期望的输出是这样的:如何在我的查询中计算去年的收入?
Date revenue_current revenue_previous
January-2017 350 450
December-2016 750 250
November-2016 4550 4230
(前一年的收入是前一年同月)
数据:
SaleDate_Yr | SaleDate_Pd | Revenue
2017 1 100
2017 1 200
2017 1 300
2016 11 100
2016 11 50
2017 1 50
2016 12 50
2016 12 50
2016 1 100
2015 11 300
2015 12 520
2016 1 100
(收入数字不加在所需的输出或样品数据,请假装他们这样做)。
我到目前为止查询:
SELECT (CONVERT(varchar(10), SaleDate_Pd) + '-' + '2017') AS sale_pd,
SUM(CASE WHEN SaleDate_Yr IN ('2017') THEN Total_Revenue ELSE 0 END)
as revenue_ty,
SUM(CASE WHEN SaleDate_Yr IN ('2016') THEN Total_Revenue ELSE 0 END) as revenue_ly
FROM
[sales].[dbo].[mycompany]
WHERE
SaleDate_Yr IN ('2016', '2017')
AND
SaleDate_Pd IN ('11','12','1')
GROUP BY (CONVERT(varchar(10), SaleDate_Pd) + '-' + '2017')
这似乎很好地工作提供我看销售额从2017年一月至2017年十二月不过有时候我想在特定的时间段看,如2016年11月,2016年12月,2017年1月,因此上一年的数字在11月和12月不适用,并且在我将年份追加到年底的日期栏中显示为2017年11月。我手动添加了一年,因为如果我没有,我每年都有单独的行,并且当年和上年的数字不会出现在同一行上。
将是有益的,如果你能提供一些示例数据和你会从示例数据所期望的结果。 –
我不明白这句话:“收入数字不加在所需的输出或样本数据中,请假装他们这样做”。当他们没有总结时,输出中应该显示什么数字? –
@StefanSteinegger我只是编写了一些随机的输入数据,如果你添加了它,它将不会加到你想要的输出上,它会在实际的实时数据中,这只是为了快速解释问题。 – 80gm2