2016-11-08 37 views
0

我有一個查詢,我需要使用SQL獲取給定報告日期的第三個月,然後將其用作查詢的一部分。我能夠得到所有的月份,但我特別需要得到第三個月,我該怎麼做呢?我知道這在其他語言中很容易實現,但在SQL中可能嗎?如何在不使用變量的情況下獲取查詢的第三個月?

SELECT REPORTING_MONTH, COUNT(*) 
FROM database1 AS fb 
    JOIN (
     --derrived core set 
     SELECT service_no, subscription_id 
     FROM database2 
     WHERE REPORTING_MONTH = '2015-04-01' <-- this is the reporting month 
    ) AS c 
    ON fb.SERVICE_NO = c.service_no 
    AND fb.subscription_id = c.subscription_id 
    AND fb.REPORTING_MONTH = '2015-07-01' <-- THIS SHOULD BE THE THIRD MONTH 
    AND fb.ACTIVE_BASE_IND_NEW = 1 
GROUP BY 1 
ORDER BY 1 

例如,如果報告月份爲「2015-04-01我需要的變量月則是‘2015年7月1日’被用作查詢

+0

您是否嘗試過使用'DATEADD(month,3,c.REPORTING_MONTH)'? –

+0

我刪除了衝突的數據庫標記。憑藉您的聲譽,您應該知道如何標記問題。 –

回答

0

您不指定您正在使用的數據庫。一種典型的方法是:

SELECT REPORTING_MONTH, COUNT(*) 
FROM database1 fb JOIN 
    database2 c 
    ON fb.SERVICE_NO = c.service_no AND 
     c.REPORTING_MONTH = '2015-04-01' AND 
     fb.subscription_id = c.subscription_id AND 
     fb.REPORTING_MONTH = c.reporting_month + interval '3 month' AND 
     fb.ACTIVE_BASE_IND_NEW = 1 
GROUP BY 1 
ORDER BY 1; 

+ interval '3 month'的確切語法因數據庫而異。

0

如果部分領域REPORTING_MONTH是文本,那麼您可能必須使用SUBSTRING(SQL Server)或MID(其他)。

如果這是一個適當的日期字段,那麼也許DATEPART(month, fb.REPORTING_MONTH) = 3將工作?

我的SQL有點生疏,但嘗試這些功能。

相關問題