2015-03-31 94 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