Попробуйте этот сценарий, он обнаруживает отсутствующие даты без указания констант -
DECLARE @CollegeDate TABLE
(
College NVARCHAR(10)
, Dept NVARCHAR(10)
, JoiningDate DATETIME
)
INSERT INTO @CollegeDate (College, Dept, JoiningDate)
VALUES
('SAEC', 'CSE', '2/1/2008'),
('MSEC', 'EEE', '2/4/2008'),
('GOV', 'ECE', '2/8/2008'),
('JKP', 'CSE', '2/9/2008'),
('VLM', 'CSE', '2/10/2008'),
('PTR', 'CSE', '2/13/2008')
;WITH dateout AS
(
SELECT
JoiningDate = MIN(JoiningDate)
, MaxJoiningDate = MAX(JoiningDate)
FROM @CollegeDate
UNION ALL
SELECT
JoiningDate + 1
, MaxJoiningDate
FROM dateout
WHERE JoiningDate < MaxJoiningDate
)
SELECT d.JoiningDate
FROM dateout d
WHERE d.JoiningDate NOT IN (SELECT c.JoiningDate FROM @CollegeDate c)
ORDER BY d.JoiningDate
Укажите, пожалуйста, базу данных, в которой вы используете –
, вам нужно присоединиться к другой таблице со всеми датами. поэтому вы можете получить отсутствующие даты, установив null в значениях объединения. – rahularyansharma
Ваш db не упоминается вами. Как только я задал аналогичный вопрос для SQL Server 2008, так что вы можете проверить это, если вы ищете только логику http://stackoverflow.com/questions/12890967/show-all-dates-data-between-two-dates-if- no-row-exists-for-specific-date-then – rahularyansharma