The following TSQL template may be used to perform the basic testing of your solutions for TSQL Challenge 27.
/***********************************************************************
----------------------------------------------
BASIC Testing Sandbox for TSQL Challenge 27
Copyright © beyondrelational.com
----------------------------------------------
Notes:
1. Copy this template and paste in your SSMS Query editor
2. Insert your query (solution for TSQL Challenge 27)
in the Section between "Insert your query below"
and "Insert your query above"
3. Run the whole batch. If you see
"Invalid Results...Failed!" getting printed in output
window, there is something wrong in the query.
Revision History:
Rev 00 - 06 April 2010 - Jacob Sebastian - Initial Release
***********************************************************************/
/*
Create a wrapper procedure around the solution
*/
IF OBJECT_ID('tempdb..#TestSolution') IS NOT NULL BEGIN
DROP PROCEDURE #TestSolution
END
GO
CREATE PROCEDURE #TestSolution AS
BEGIN
IF OBJECT_ID('TC27','U') IS NOT NULL
DROP TABLE TC27
CREATE TABLE TC27(
SchID INT IDENTITY PRIMARY KEY,
Patient INT,
Nurse INT,
dy CHAR(3),
St CHAR(4),
En CHAR(4)
)
INSERT INTO TC27( Patient, Nurse, dy, st, en)
SELECT 2000, 201, 'Mon', '0800','2000' UNION ALL
SELECT 2000, 201, 'Tue', '0800','2000' UNION ALL
SELECT 2000, 201, 'Wed', '0800','2000' UNION ALL
SELECT 2001, 202, 'Mon', '1900','0800' UNION ALL
SELECT 2001, 201, 'Tue', '1900','0800' UNION ALL
SELECT 2001, 202, 'Wed', '1900','0800' UNION ALL
SELECT 2002, 203, 'Mon', '0800','2000' UNION ALL
SELECT 2002, 203, 'Tue', '2000','0800' UNION ALL
SELECT 2002, 201, 'Wed', '2000','0830' UNION ALL
SELECT 2004, 205, 'Thu', '1000','1600' UNION ALL
SELECT 2004, 205, 'Fri', '1000','1600' UNION ALL
SELECT 2004, 205, 'Sat', '1000','1600' UNION ALL
SELECT 2004, 205, 'Sun', '1000','1600' UNION ALL
SELECT 2002, 201, 'Thu', '0800','2000' UNION ALL
SELECT 2006, 205, 'Sat', '1200','1400' UNION ALL
SELECT 2007, 205, 'Fri', '0800','1100' UNION ALL
SELECT 2002, 203, 'Fri', '0800','2000'
;
/* Insert your query below */
/* Insert your query above */
END
GO
SET NOCOUNT ON
/*
Start the testing phase
*/
DECLARE @x TABLE(
AutoID INT IDENTITY,
SchID INT,
Patient INT,
Nurse INT,
dy CHAR(3),
St CHAR(4),
En CHAR(4),
Overlapping CHAR(3)
)
-- Execute the code and
INSERT @x EXEC #TestSolution
DECLARE @z TABLE(
AutoID INT IDENTITY,
SchID INT,
Patient INT,
Nurse INT,
dy CHAR(3),
St CHAR(4),
En CHAR(4),
Overlapping CHAR(3)
)
INSERT INTO @z(SchID, Patient, Nurse, dy, St, En, Overlapping)
SELECT 1,2000,201,'Mon','0800','2000','No' UNION ALL
SELECT 2,2000,201,'Tue','0800','2000','No' UNION ALL
SELECT 5,2001,201,'Tue','1900','0800','Yes' UNION ALL
SELECT 3,2000,201,'Wed','0800','2000','No' UNION ALL
SELECT 9,2002,201,'Wed','2000','0830','No' UNION ALL
SELECT 14,2002,201,'Thu','0800','2000','Yes' UNION ALL
SELECT 4,2001,202,'Mon','1900','0800','No' UNION ALL
SELECT 6,2001,202,'Wed','1900','0800','No' UNION ALL
SELECT 7,2002,203,'Mon','0800','2000','No' UNION ALL
SELECT 8,2002,203,'Tue','2000','0800','No' UNION ALL
SELECT 17,2002,203,'Fri','0800','2000','No' UNION ALL
SELECT 10,2004,205,'Thu','1000','1600','No' UNION ALL
SELECT 16,2007,205,'Fri','0800','1100','No' UNION ALL
SELECT 11,2004,205,'Fri','1000','1600','Yes' UNION ALL
SELECT 12,2004,205,'Sat','1000','1600','No' UNION ALL
SELECT 15,2006,205,'Sat','1200','1400','Yes' UNION ALL
SELECT 13,2004,205,'Sun','1000','1600','No'
-- Match the output with expected result.
IF EXISTS(
(SELECT * FROM @x EXCEPT SELECT * FROM @z)
UNION ALL
(SELECT * FROM @z EXCEPT SELECT * FROM @x))
BEGIN
PRINT 'Invalid Results...Failed!'
END ELSE BEGIN
PRINT 'Congratulations...Passed!'
END