2017-04-12 52 views
-1

我有一個表有像下面的圖像的數據。 enter image description here需要重複的數據,如果新的數據不在下個月在sql

和所需的輸出是:

enter image description here

輸出的說明:

如果看到PROJECT_ID 111具有總共4 VERSION_ID。第一版Id的開始日期爲08/05/2015,version_ID 2的開始日期爲2015年12月30日。因此,在我的數據庫中,我在兩個版本之間錯過了月份,因此,我需要顯示那些帶有以前版本ID的月份,並且需要繼續到當前年份的上個月(即2017年12月)

如果您看到輸出相同的版本ID將在下個月重複,直到新的version_id在該月份不可用。

請幫我這一個..在此先感謝

+0

首先,你爲什麼要標記的MySQL?其次,先寫一些代碼,我們不是爲你擔心的。 – DavidG

+0

我已經寫了一個代碼,這是隻適用於當前年份或特定年份的CTE –

+0

的幫助共享此代碼 – cha

回答

0

此代碼工作正常...

我與問題的工作,因爲早上,但我沒有得到什麼......所以,貼這個問題..但最後得到的答覆果然...

這裏是我的代碼

WITH mycte AS 
(
    SELECT Project_ID ,CONVERT(DATE, Start_Date,102) DateValue, Version_ID 
    from projects 
    UNION ALL 
    SELECT project_id, dateadd(mm, 1, DateValue), Version_ID 
    FROM mycte 
    WHERE year(DateValue) <= YEAR(GETDATE()) 
) 
SELECT project_id, month(DateValue), year(datevalue), max(Version_ID) as version_id, 
     cast(cast(year(DateValue) as varchar(4)) + 
        RIGHT('0' + CAST(month(DateValue) AS VARCHAR(2)), 2) + 
        RIGHT('0' + CAST('01' AS VARCHAR(2)), 2) as date) as start_date 
FROM mycte 
--where project_id = 111 
group by project_id, month(DateValue), year(datevalue) 
having max(year(datevalue)) <= year(getdate()) 


OPTION (MAXRECURSION 0) 
相關問題