2015-11-15 28 views
1

我可以在本月和上個月輕鬆獲得總銷售額。如何在Firebird中獲取季度日期SQL

SELECT ‘This Mount’, SUM(Price) FROM Sales 
WHERE EXTRACT(MONTH FROM OrderDate) = EXTRACT(MONTH FROM CURRENT_DATE) 
    AND EXTRACT(YEAR FROM OrderDate) = EXTRACT(YEAR FROM CURRENT_DATE) 
Union All 
SELECT ‘Previous Month’, SUM(Price) FROM Sales 
WHERE EXTRACT(MONTH FROM OrderDate) = EXTRACT(MONTH FROM CURRENT_DATE) 
    AND EXTRACT(YEAR FROM OrderDate) = EXTRACT(YEAR FROM CURRENT_DATE) 

我想獲得本季度和上一季度的總銷售額。

獲得季度的日期是很容易與MS-SQL如下:

SELECT DATEPART(QUARTER, @date) 

我怎樣才能做到這一點與火鳥?結合

回答

3

使用DECODE函數摘錄:

SELECT 
    DECODE(EXTRACT(MONTH FROM <date_field>), 
    1, 'I', 
    2, 'I', 
    3, 'I', 
    4, 'II', 
    5, 'II', 
    6, 'II', 
    7, 'III', 
    8, 'III', 
    9, 'III', 
    'IV') 
    FROM 
    <some_table> 

或者只是

SELECT 
    (EXTRACT(MONTH FROM <date_field>) - 1)/3 + 1 
    FROM 
    <some_table> 
+1

'提取物(月份從)/ 3 + 1' 這是行不通的。因爲(12月)12/3 + 1 = 5 – Zebedee

+0

固定。應該從一個月的數字中提取1。 –

+0

你說得對。謝謝你的提示。 – Zebedee

1
SELECT dates, 
    EXTRACT(MONTH from dates) as SalesMonth, 
    floor(((EXTRACT(MONTH from dates)-1)/3.0 + 1)) as QTR 
from CustomerPO 
where ((dates > '1/1/2016') and (dates < '12/31/2016')) 
order by dates 

這裏, '日期' 是Order表的字段名 'CustomerPO'

相關問題