jfreeman2010
asked on
t-sql query help
I need to come up a query to find the missing recs, the following are the best example I can come up:
CREATE TABLE #TMPTB
(
EMPID INT,
EMPNAME VARCHAR(100),
WORK_DAY SMALLINT,
SCHED_DATE DATE,
WORK_DATE1 DATE,
WORK_DATE2 DATE,
WORK_DATE3 DATE,
WORK_DATE4 DATE
)
DECLARE @today_date date;
set @today_date = '2013-05-20'
INSERT INTO #TMPTB values(6427, 'John Sminit', 1, '2012-09-14', '2012-10-03', '2012-12-14', '2013-03-14', '2013-06-14' )
INSERT INTO #TMPTB values(6427, 'John Sminit', 2, '2012-09-14', '2012-12-13', '2012-12-14', '2013-03-14', '2013-06-14' )
INSERT INTO #TMPTB values(6427, 'John Sminit', 3, '2012-09-14', '2013-03-13', '2012-12-14', '2013-03-14', '2013-06-14' )
INSERT INTO #TMPTB values(470772, 'John Doe', 1, '2012-08-09', '2012-08-23', '2012-11-09', '2013-02-09', '2013-05-09' )
INSERT INTO #TMPTB values(470772, 'John Doe', 4, '2012-08-09', '2013-05-06', '2012-11-09', '2013-02-09', '2013-05-09' )
INSERT INTO #TMPTB values(470776, 'Mary Doe', 1, '2012-09-22', '2012-09-25', '2012-12-22', '2013-03-22', '2013-06-22' )
INSERT INTO #TMPTB values(470776, 'Mary Doe', 2, '2012-09-22', '2012-12-21', '2012-12-22', '2013-03-22', '2013-06-22' )
INSERT INTO #TMPTB values(470776, 'Mary Doe', 3, '2012-09-22', '2013-03-21', '2013-03-22', '2013-03-22', '2013-06-22' )
INSERT INTO #TMPTB values(484278, 'Mary Sminit', 1, '2012-08-24', '2012-08-28', '2012-11-24', '2013-02-24', '2013-05-24' )
INSERT INTO #TMPTB values(484278, 'Mary Sminit', 3, '2012-08-24', '2013-05-14', '2012-11-24', '2013-02-24', '2013-05-24' )
INSERT INTO #TMPTB values(485026, 'Jane Sminit', 1, '2012-09-19', '2012-10-09', '2012-12-19', '2013-03-19', '2013-06-19' )
INSERT INTO #TMPTB values(485026, 'Jane Sminit', 3, '2012-09-19', '2013-05-14', '2012-12-19', '2013-03-19', '2013-06-19' )
INSERT INTO #TMPTB values(486272, 'Jane Doe', 1, '2012-08-24', '2012-08-28', '2012-11-24', '2013-02-24', '2013-05-24' )
INSERT INTO #TMPTB values(486272, 'Jane Doe', 3, '2012-08-24', '2013-05-14', '2012-11-24', '2013-02-24', '2013-05-24' )
INSERT INTO #TMPTB values(485366, 'JJ Doe', 1, '2012-08-09', '2012-08-23', '2012-11-09', '2013-02-09', '2013-05-09' )
INSERT INTO #TMPTB values(485366, 'JJ Doe', 4, '2012-08-09', '2013-05-14', '2012-11-09', '2013-02-09', '2013-05-09' )
SELECT * FROM #TMPTB
/*
LOOKING RESULT LIKE THIS:
empid empname sched_date work_date1 work_date2 work_date3 work_date4 missing_work_date
470772 John Doe 2012-08-09 2012-08-23 2012-11-09 2013-02-09 2013-05-09 2, 3
484278 Mary Sminit 2012-08-24 2012-08-28 2012-11-24 2013-02-24 2013-05-24 2
485026 Jane Sminit 2012-09-19 2012-10-09 2012-12-19 2013-03-19 2013-06-19 2
486272 Jane Doe 2012-08-24 2012-08-28 2012-11-24 2013-02-24 2013-05-24 2
486272 JJ Doe 2012-08-09 2013-05-14 2012-11-09 2013-02-09 2013-05-09 2,3 (the last work date should be 2013-05-09, but missed, so I did a make up date at 2013-05-14)
*/
DROP TABLE #TMPTB;
Thank you very much for helping...
CREATE TABLE #TMPTB
(
EMPID INT,
EMPNAME VARCHAR(100),
WORK_DAY SMALLINT,
SCHED_DATE DATE,
WORK_DATE1 DATE,
WORK_DATE2 DATE,
WORK_DATE3 DATE,
WORK_DATE4 DATE
)
DECLARE @today_date date;
set @today_date = '2013-05-20'
INSERT INTO #TMPTB values(6427, 'John Sminit', 1, '2012-09-14', '2012-10-03', '2012-12-14', '2013-03-14', '2013-06-14' )
INSERT INTO #TMPTB values(6427, 'John Sminit', 2, '2012-09-14', '2012-12-13', '2012-12-14', '2013-03-14', '2013-06-14' )
INSERT INTO #TMPTB values(6427, 'John Sminit', 3, '2012-09-14', '2013-03-13', '2012-12-14', '2013-03-14', '2013-06-14' )
INSERT INTO #TMPTB values(470772, 'John Doe', 1, '2012-08-09', '2012-08-23', '2012-11-09', '2013-02-09', '2013-05-09' )
INSERT INTO #TMPTB values(470772, 'John Doe', 4, '2012-08-09', '2013-05-06', '2012-11-09', '2013-02-09', '2013-05-09' )
INSERT INTO #TMPTB values(470776, 'Mary Doe', 1, '2012-09-22', '2012-09-25', '2012-12-22', '2013-03-22', '2013-06-22' )
INSERT INTO #TMPTB values(470776, 'Mary Doe', 2, '2012-09-22', '2012-12-21', '2012-12-22', '2013-03-22', '2013-06-22' )
INSERT INTO #TMPTB values(470776, 'Mary Doe', 3, '2012-09-22', '2013-03-21', '2013-03-22', '2013-03-22', '2013-06-22' )
INSERT INTO #TMPTB values(484278, 'Mary Sminit', 1, '2012-08-24', '2012-08-28', '2012-11-24', '2013-02-24', '2013-05-24' )
INSERT INTO #TMPTB values(484278, 'Mary Sminit', 3, '2012-08-24', '2013-05-14', '2012-11-24', '2013-02-24', '2013-05-24' )
INSERT INTO #TMPTB values(485026, 'Jane Sminit', 1, '2012-09-19', '2012-10-09', '2012-12-19', '2013-03-19', '2013-06-19' )
INSERT INTO #TMPTB values(485026, 'Jane Sminit', 3, '2012-09-19', '2013-05-14', '2012-12-19', '2013-03-19', '2013-06-19' )
INSERT INTO #TMPTB values(486272, 'Jane Doe', 1, '2012-08-24', '2012-08-28', '2012-11-24', '2013-02-24', '2013-05-24' )
INSERT INTO #TMPTB values(486272, 'Jane Doe', 3, '2012-08-24', '2013-05-14', '2012-11-24', '2013-02-24', '2013-05-24' )
INSERT INTO #TMPTB values(485366, 'JJ Doe', 1, '2012-08-09', '2012-08-23', '2012-11-09', '2013-02-09', '2013-05-09' )
INSERT INTO #TMPTB values(485366, 'JJ Doe', 4, '2012-08-09', '2013-05-14', '2012-11-09', '2013-02-09', '2013-05-09' )
SELECT * FROM #TMPTB
/*
LOOKING RESULT LIKE THIS:
empid empname sched_date work_date1 work_date2 work_date3 work_date4 missing_work_date
470772 John Doe 2012-08-09 2012-08-23 2012-11-09 2013-02-09 2013-05-09 2, 3
484278 Mary Sminit 2012-08-24 2012-08-28 2012-11-24 2013-02-24 2013-05-24 2
485026 Jane Sminit 2012-09-19 2012-10-09 2012-12-19 2013-03-19 2013-06-19 2
486272 Jane Doe 2012-08-24 2012-08-28 2012-11-24 2013-02-24 2013-05-24 2
486272 JJ Doe 2012-08-09 2013-05-14 2012-11-09 2013-02-09 2013-05-09 2,3 (the last work date should be 2013-05-09, but missed, so I did a make up date at 2013-05-14)
*/
DROP TABLE #TMPTB;
Thank you very much for helping...
which version of sql server are you using?
ASKER
sql server 2012
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
thank you very much for help!!