2015-03-31 91 views
1

我的表结构增加派生列是这样的:比较两个日期列和使用Oracle SQL

ID, 
country, 
month, 
year, 
total amt in previous period, 
total amt during period, 
incr/decr in total amt in previous period, 
incr/decr in total amt during (month, year) 

IDmonthyeartotal amt域在表abc可用。 incr/decr in total amt in previous periodtotal amt in previous periodtotal amt during period列之间的差异。

我写此查询:

select m.id, m.month, m.year, m.total_amt 
from abc m  
order by year, month desc; 

对于total amt in previous period我不能使用Between Date() And DateAdd("M", -1, Date());,因为我没有约会,但只是年份和月份。

如何比较两列与yearmonth列以及如何使用子查询具有最后两个派生列?

+1

你是表结构对我来说并不明确。 – moffeltje 2015-03-31 10:11:05

+0

期间的总金额与月和年相比,并返回当前月份和年度(2015年3月)中“总金额”的值,前一期间的总金额与当月的前一个月(2015年2月)相比较并显示值 – k1j 2015-03-31 10:22:01

回答

1

对于比较月有一个特定的功能(适用于MS SQL和ORACLE)。有几天和几年的功能。见下面的链接:这

YEAR

MONTH

DAY

实例和子查询获得派生列可以在这个主题论坛已经讨论中找到:

Stackoverflow topic

+0

嗨,我生成报告使用oracle报告生成器,我需要sql查询,但我认为它接受单个查询,因此我需要一个律帮助,谢谢 – k1j 2015-03-31 10:28:59

+0

我已检查,其相同的功能为Oracle:[MONTH FUNCTION](http://docs.oracle.com/javadb/10.8.3.0/ref/rrefmonthfunc.html) 因此,您可以使用我发送给您的示例。如果有其他问题,请询问。 – 2015-03-31 10:32:10