I'm trying to pull the correct School year based on the test date. If a test date occurs between the 1st day of school and the next years 1st day of school that is the school year for that test. Keep in mind that next years school terms will not be created until late summer so for the current school year next years 1st day of school would be Null.CREATE TABLE Test( ID INT not null, LocID CHAR(4) not null, TestName VARCHAR(30) not null, TestDate SMALLDATETIME not null, Score decimal(6,2) not null )GOINSERT Test (ID, LocID, TestName, TestDate, Score) VALUES(3377, '355', 'ACT_ENG', '2012-09-27 00:00:00', 16.00),(3377, '355', 'ACT_SCI', '2012-09-27 00:00:00', 23.00),(1985, '355', 'ACT_MATH', '2012-07-02 00:00:00', 15.00),(1985, '355', 'ACT_RDG', '2012-07-02 00:00:00', 17.00),(1985, '355', 'ACT_ENG', '2012-07-02 00:00:00', 16.00),(1985, '355', 'ACT_SCI', '2012-07-02 00:00:00', 23.00),(7798, '355', 'ACT_MATH', '2012-08-13 00:00:00', 15.00),(7798, '355', 'ACT_RDG', '2012-08-13 00:00:00', 17.00),(7798, '355', 'ACT_ENG', '2012-08-13 00:00:00', 16.00),(7798, '355', 'ACT_SCI', '2012-08-13 00:00:00', 23.00),(5732, '344', 'ACT_MATH', '2012-05-02 00:00:00', 15.00),(5732, '344', 'ACT_RDG', '2012-05-02 00:00:00', 17.00),(5732, '344', 'ACT_ENG', '2012-05-02 00:00:00', 16.00),(5732, '344', 'ACT_SCI', '2012-05-02 00:00:00', 23.00),(2735, '344', 'ACT_MATH', '2012-08-14 00:00:00', 15.00),(2735, '344', 'ACT_RDG', '2012-08-14 00:00:00', 16.00),(2735, '344', 'ACT_ENG', '2012-08-14 00:00:00', 15.00),(2735, '344', 'ACT_SCI', '2012-08-14 00:00:00', 21.00),(2735, '344', 'ACT_MATH', '2012-08-14 00:00:00', 15.00),(4343, '355', 'ACT_ENG', '2011-06-02 00:00:00', 16.00),(4343, '355', 'ACT_SCI', '2011-06-02 00:00:00', 23.00),(6831, '344', 'ACT_ENG', '2011-09-12 00:00:00', 16.00),(6831, '344', 'ACT_SCI', '2011-09-12 00:00:00', 23.00),(8343, '355', 'ACT_ENG', '2010-08-18 00:00:00', 16.00),(8343, '355', 'ACT_SCI', '2010-08-18 00:00:00', 23.00),(9831, '344', 'ACT_ENG', '2010-09-16 00:00:00', 16.00),(9831, '344', 'ACT_SCI', '2010-09-16 00:00:00', 23.00)GOCREATE TABLE SchoolTerm( SchoolYR CHAR(9) not null, LocID CHAR(4) not null, Term TINYINT not null, StartDate DATE not null)GOINSERT SchoolTerm (SchoolYR, Term, LocID, StartDate) VALUES('2010-2011', 1, '355', '2010-08-17'),('2010-2011', 2, '355', '2010-10-19'),('2010-2011', 3, '355', '2011-01-05'),('2010-2011', 4, '355', '2011-03-21'),('2010-2011', 1, '344', '2010-08-17'),('2010-2011', 2, '344', '2010-10-19'),('2010-2011', 3, '344', '2011-01-05'),('2010-2011', 4, '344', '2011-03-21'),('2011-2012', 1, '355', '2011-08-16'),('2011-2012', 2, '355', '2011-10-18'),('2011-2012', 3, '355', '2012-01-03'),('2011-2012', 4, '355', '2012-03-19'),('2011-2012', 1, '344', '2011-08-16'),('2011-2012', 2, '344', '2011-10-18'),('2011-2012', 3, '344', '2012-01-03'),('2011-2012', 4, '344', '2012-03-19'),('2012-2013', 1, '355', '2012-08-14'),('2012-2013', 2, '355', '2012-10-15'),('2012-2013', 3, '355', '2013-01-03'),('2012-2013', 4, '355', '2013-03-11'),('2012-2013', 1, '344', '2012-08-14'),('2012-2013', 2, '344', '2012-10-15'),('2012-2013', 3, '344', '2013-01-03'),('2012-2013', 4, '344', '2013-03-11')GO
Desired results:ID LocID TestName TestDate Score SchoolYR3377 355 ACT_ENG 2012-09-27 00:00:00 16.00 2012-20133377 355 ACT_SCI 2012-09-27 00:00:00 23.00 2012-20131985 355 ACT_MATH 2012-07-02 00:00:00 15.00 2011-20121985 355 ACT_RDG 2012-07-02 00:00:00 17.00 2011-20121985 355 ACT_ENG 2012-07-02 00:00:00 16.00 2011-20121985 355 ACT_SCI 2012-07-02 00:00:00 23.00 2011-20127798 355 ACT_MATH 2012-08-13 00:00:00 15.00 2011-20127798 355 ACT_RDG 2012-08-13 00:00:00 17.00 2011-20127798 355 ACT_ENG 2012-08-13 00:00:00 16.00 2011-20127798 355 ACT_SCI 2012-08-13 00:00:00 23.00 2011-20125732 344 ACT_MATH 2012-05-02 00:00:00 15.00 2011-20125732 344 ACT_RDG 2012-05-02 00:00:00 17.00 2011-20125732 344 ACT_ENG 2012-05-02 00:00:00 16.00 2011-20125732 344 ACT_SCI 2012-05-02 00:00:00 23.00 2011-20122735 344 ACT_MATH 2012-08-14 00:00:00 15.00 2012-20132735 344 ACT_RDG 2012-08-14 00:00:00 16.00 2012-20132735 344 ACT_ENG 2012-08-14 00:00:00 15.00 2012-20132735 344 ACT_SCI 2012-08-14 00:00:00 21.00 2012-20132735 344 ACT_MATH 2012-08-14 00:00:00 15.00 2012-20134343 355 ACT_ENG 2011-06-02 00:00:00 16.00 2010-20114343 355 ACT_SCI 2011-06-02 00:00:00 23.00 2010-20116831 344 ACT_ENG 2011-09-12 00:00:00 16.00 2011-20126831 344 ACT_SCI 2011-09-12 00:00:00 23.00 2011-20128343 355 ACT_ENG 2010-08-18 00:00:00 16.00 2010-20118343 355 ACT_SCI 2010-08-18 00:00:00 23.00 2010-20119831 344 ACT_ENG 2010-09-16 00:00:00 16.00 2010-20119831 344 ACT_SCI 2010-09-16 00:00:00 23.00 2010-2011Not sure how to get the next years 1st day of school because that is not in the SchoolTerm table.I've tried the following query. It returns the correct number of rows but the SchoolYR column is Null.(Select t.ID, t.LocID, t.TestName, t.TestDate, t.Score, s.SchoolYR from (Select ID, LocID, TestName, TestDate, Score from Test) AS t left join SchoolTerm AS s on s.Term = 1 and s.LocID = t.LocID and (t.TestDate >= dateadd(day,datediff(day,0,s.StartDate)-0,0) and t.TestDate <= dateadd(day,datediff(day,0,s.StartDate)-1,0)) where (t.TestDate >= dateadd(day,datediff(day,0,getdate())-804,0) and t.TestDate <= dateadd(day,datediff(day,0,getdate())-1,0)) )
Thanks.