-- Creating a table to insert your data.
-- You can use your database table here.
DECLARE @tbl TABLE(
DateVal DATETIME
)
INSERT INTO @tbl SELECT CAST('01/01/2017' AS DATETIME)
INSERT INTO @tbl SELECT CAST('02/01/2017' AS DATETIME)
INSERT INTO @tbl SELECT CAST('04/01/2017' AS DATETIME)
INSERT INTO @tbl SELECT CAST('06/01/2017' AS DATETIME)
INSERT INTO @tbl SELECT CAST('05/01/2016' AS DATETIME)
INSERT INTO @tbl SELECT CAST('07/01/2016' AS DATETIME)
INSERT INTO @tbl SELECT CAST('09/01/2016' AS DATETIME)
INSERT INTO @tbl SELECT CAST('10/01/2016' AS DATETIME)
-- Creating another table variable that will contain the range
DECLARE @tblRange TABLE(
DateValue DATETIME
)
DECLARE @startDate DATETIME = ''
DECLARE @endDate DATETIME = ''
-- Get the min date and max date from your range.
;WITH DATES(MINDATE,MAXDATE) AS (
SELECT (SELECT MIN(DateVal) FROM @tbl) A,
(SELECT MAX(DateVal) FROM @tbl) B
)
SELECT @startDate = MINDATE, @endDate = MAXDATE FROM DATES;
--Populating the range
--Get the difference between min and max in months
DECLARE @seqDays INT;
SELECT @seqDays = DATEDIFF(m, @startDate,@endDate)
DECLARE @val INT = 1
WHILE(@val <= @seqDays)
BEGIN
--Generate the range with the month
INSERT INTO @tblRange VALUES(DATEADD(MONTH, @val, @startDate))
SET @val = @val + 1
END
--Get the months not present in original data
SELECT DateValue FROM @tblRange WHERE DateValue NOT IN (SELECT DateVal FROM @tbl)
編輯您的問題,並提供採樣數據和期望的結果。 –
從哪個日期開始 – Amit