如果下个月在sql中没有新数据,则需要重复数据

时间:2017-04-12 00:00:25

标签: sql sql-server sql-server-2008

我有一张桌子,其中包含如下图片的数据。 enter image description here

和所需的输出是:

enter image description here

输出说明:

如果您看到project_ID 111共有4个Version_id。第一版Id的开始日期是2015年5月8日,version_ID 2的开始日期是2015年12月30日。因此,在我的数据库中,我错过了2个版本之间的月份,因此,我需要显示那些具有以前版本ID的月份,并且需要继续到当前年度的上个月(即2017年12月)

如果您看到输出的图像相同版本ID将在下个月重复,直到该月份没有新的version_id。

请帮我解决这个问题..提前致谢

1 个答案:

答案 0 :(得分: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)