繁体   English   中英

SQL比较列并计算差异

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM