[英]SQL Comparing columns and calculating the difference
我正在使用Oracle 11gR2
我有一个表,例如:
ProductName | Volume | Date
-------------------------------------------
ProdA | 1000 | 11-Oct-2013
ProdA | 2000 | 16-Oct-2013
ProdB | 500 | 12-Oct-2013
ProdA | 200 | 11-Nov-2013
ProdB | 100 | 16-Nov-2013
ProdB | 300 | 12-Nov-2013
我想要做的是每种产品的总体积,然后比较两个月内的体积,并计算出一个计算出差异的字段,所以我最终得到:
ProductName | VolumeCurrentMonth | VolumePrevMonth | Difference
-------------------------------------------
ProdA | 200 | 3000 | -2800
ProdB | 400 | 500 | -100
我的代码远不能满足要求,但我还是会发布它:
Select ProductName, sum(Volume), to_char(Date, 'Month') as Current_Month, to_char(run_date, 'Month') as PY_Month
from Sales
where Date is not null
group by ProductName, Date;
我将分两步进行审批-首先,进行内部查询以按产品和月份分组。 然后,外部查询可以使用解析LAG
函数处理与上个月的比较:
SELECT productName, volume_sum AS curr_month_sum,
LAG(volume_sum) OVER (PARTITION BY productName ORDER BY month)
FROM (SELECT productName, trunc(theDate, 'MM-YYYY') AS month, SUM(volume) as volume_sum
FROM some_table
GROUP BY productName, trunc(theDate, 'MM-YYYY')
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.