I created a table not listed above to get Period from SafeDate.
-------------------------------------------------------
CREATE DATABASE Safety
GO
USE SAFETY
CREATE TABLE Employees
( GPID int NOT NULL PRIMARY KEY,
FirstName nchar(20) NOT NULL,
Department nchar(20) NOT NULL)
INSERT INTO Employees (GPID, FirstName, Department)
VALUES (1,'Bob','Shipping')
INSERT INTO Employees (GPID, FirstName, Department)
VALUES (2,'Mary','Maintenance')
CREATE TABLE Periods
( PeriodNum int NOT NULL PRIMARY KEY,
PeriodText nchar(10) NOT NULL)
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(1,'1')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(2,'2')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(3,'3')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(4,'4')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(5,'5')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(6,'6')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(7,'7')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(8,'8')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(9,'9')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(10,'10')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(11,'11')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(12,'12')
INSERT INTO Periods (PeriodNum, PeriodText)
VALUES(13,'13')
CREATE TABLE Years
( YearNum int NOT NULL PRIMARY KEY,
YearText nchar(10) NOT NULL)
INSERT INTO Years (YearNum, YearText)
VALUES (2010, '2010')
INSERT INTO Years (YearNum, YearText)
VALUES (2011, '2011')
INSERT INTO Years (YearNum, YearText)
VALUES (2012, '2012')
INSERT INTO Years (YearNum, YearText)
VALUES (2013, '2013')
INSERT INTO Years (YearNum, YearText)
VALUES (2014, '2014')
INSERT INTO Years (YearNum, YearText)
VALUES (2015, '2015')
CREATE TABLE Topics
( TopicID int NOT NULL PRIMARY KEY,
TopicDesc nvarchar(50) NOT NULL)
INSERT INTO Topics (TopicID, TopicDesc)
VALUES (1,'Forklift Safety')
INSERT INTO Topics (TopicID, TopicDesc)
VALUES( 2,'Hearing Conservation')
INSERT INTO Topics (TopicID, TopicDesc)
VALUES (3,'Ergonomics')
INSERT INTO Topics (TopicID, TopicDesc)
VALUES (4,'Fall Protection')
CREATE TABLE Schedule
( ScheduleID int NOT NULL PRIMARY KEY,
YearNum int NOT NULL,
PeriodNum int NOT NULL,
TopicID int NOT NULL,
FOREIGN KEY (YearNum) REFERENCES Years(YearNum),
FOREIGN KEY (PeriodNum) REFERENCES Periods(PeriodNum),
FOREIGN KEY (TopicID) REFERENCES Topics(TopicID))
INSERT INTO Schedule (ScheduleID, YearNum, PeriodNum, TopicID)
VALUES(1, 2011, 1, 2)
INSERT INTO Schedule (ScheduleID, YearNum, PeriodNum, TopicID)
VALUES(2, 2011, 2, 1)
INSERT INTO Schedule (ScheduleID, YearNum, PeriodNum, TopicID)
VALUES(3, 2011, 2, 3)
INSERT INTO Schedule (ScheduleID, YearNum, PeriodNum, TopicID)
VALUES(4, 2012, 1, 4)
CREATE TABLE Training
( TrainingID int NOT NULL PRIMARY KEY,
GPID int NOT NULL,
SafeDate datetime NOT NULL,
TopicID int NOT NULL,
FOREIGN KEY (GPID) REFERENCES Employees(GPID),
FOREIGN KEY (TopicID) REFERENCES Topics(TopicID))
INSERT INTO Training (TrainingID, GPID, SafeDate, TopicID)
VALUES (1, 1, '01/01/2011', 2)
INSERT INTO Training (TrainingID, GPID, SafeDate, TopicID)
VALUES (2, 2, '01/01/2011', 2)
INSERT INTO Training (TrainingID, GPID, SafeDate, TopicID)
VALUES (3, 1, '01/25/2011', 1)
INSERT INTO Training (TrainingID, GPID, SafeDate, TopicID)
VALUES (4, 1, '01/25/2011', 3)
INSERT INTO Training (TrainingID, GPID, SafeDate, TopicID)
VALUES (5, 2, '01/25/2011', 3)
INSERT INTO Training (TrainingID, GPID, SafeDate, TopicID)
VALUES (6, 1, '01/01/2012', 4)
INSERT INTO Training (TrainingID, GPID, SafeDate, TopicID)
VALUES (7, 2, '01/01/2012', 4)
CREATE TABLE Weeks
( WeekID int NOT NULL PRIMARY KEY,
Period int NOT NULL,
WkPd nchar(10) NOT NULL)
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (1,1,'1x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (2,1,'1x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (3,1,'1x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (4,1,'1x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (5,2,'2x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (6,2,'2x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (7,2,'2x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (8,2,'2x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (9,3,'3x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (10,3,'3x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (11,3,'3x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (12,3,'3x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (13,4,'4x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (14,4,'4x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (15,4,'4x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (16,4,'4x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (17,5,'5x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (18,5,'5x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (19,5,'5x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (20,5,'5x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (21,6,'6x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (22,6,'6x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (23,6,'6x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (24,6,'6x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (25,7,'7x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (26,7,'7x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (27,7,'7x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (28,7,'7x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (29,8,'8x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (30,8,'8x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (31,8,'8x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (32,8,'8x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (33,9,'9x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (34,9,'9x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (35,9,'9x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (36,9,'9x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (37,10,'10x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (38,10,'10x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (39,10,'10x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (40,10,'10x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (41,11,'11x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (42,11,'11x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (43,11,'11x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (44,11,'11x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (45,12,'12x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (46,12,'12x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (47,12,'12x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (48,12,'12x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (49,13,'13x1')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (50,13,'13x2')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (51,13,'13x3')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (52,13,'13x4')
INSERT INTO Weeks (WeekID, Period, WkPd)
VALUES (53,13,'13x5')
GO
CREATE VIEW vwTraining
AS
SELECT dbo.Training.TrainingID, dbo.Training.GPID, dbo.Training.SafeDate, dbo.Training.TopicID, dbo.Weeks.Period, dbo.Weeks.WkPd,
YEAR(dbo.Training.SafeDate) AS TrainingYear
FROM dbo.Training INNER JOIN
dbo.Weeks ON { fn WEEK(dbo.Training.SafeDate) } = dbo.Weeks.WeekID