I have 2 tables and need to check if the record exist in the #diagnose table and meet the rules below than return it.
I have the query below but need your help to get the desired output below. SQL 2008
Thanks in advance.
IF OBJECT_ID('Tempdb.dbo.#Temp', 'u') IS NOT NULL
DROP TABLE #Temp
GO
CREATE TABLE dbo.#Temp
(
patient_id INT NULL,
creator VARCHAR(15) NULL,
creation_dt DATETIME NULL,
DoB DATETIME NULL,
DoA DATETIME NULL,
Location_Id INT NULL,
DocId INT NULL,
Spect_only BIT NULL
)
GO
IF OBJECT_ID('Tempdb.dbo.#Diagnose', 'u') IS NOT NULL
DROP TABLE #Diagnose
GO
CREATE TABLE dbo.#Diagnose
(
patient_id INT NULL
)
GO
INSERT INTO dbo.#Diagnose( [Patient_ID])
VALUES (21468044);
INSERT INTO dbo.#Diagnose( [Patient_ID])
VALUES (21478748);
GO
-- DELETE #Temp
INSERT INTO dbo.#Temp( [Patient_ID],[Creator],[creation_dt], DoB, DoA, Location_Id , DocId, Spect_only )
VALUES (12999087, 'ABCD\dtaylor', '04/03/2013', '05/10/1967', '04/03/2013', 2, 8, 1);
INSERT INTO dbo.#Temp( [Patient_ID],[Creator],[creation_dt], DoB, DoA, Location_Id , DocId, Spect_only)
VALUES (12999087, 'ABCD\KLe', '04/03/2013', '05/10/1967', '04/03/2013', 2, 8, 1 );
INSERT INTO dbo.#Temp([Patient_ID],[Creator],[creation_dt], DoB, DoA, Location_Id , DocId, Spect_only )
VALUES (12999088, 'ABCD\LSmith', '04/11/2013', '03/05/1969', '04/06/2013', 7, 4, 0 );
INSERT INTO dbo.#Temp( [Patient_ID],[Creator],[creation_dt], DoB, DoA, Location_Id , DocId, Spect_only )
VALUES (21468044, 'ABCD\kmjala', '03/06/2013', '03/05/1969', '04/06/2013', 9, 2, 0);
INSERT INTO dbo.#Temp([Patient_ID],[Creator], [creation_dt], DoB, DoA, Location_Id , DocId, Spect_only )
VALUES (21478044, 'ABCD\John', '03/15/2013', '10/07/1971', '04/26/2013', 5, 8, 0 );
INSERT INTO dbo.#Temp([Patient_ID],[Creator],[creation_dt], DoB, DoA, Location_Id , DocId, Spect_only )
VALUES ( 21468097, 'ABCD\David', '02/21/2013', '06/13/1969', '02/18/2013', 3, 6, 0 );
INSERT INTO dbo.#Temp([Patient_ID],[Creator],[creation_dt], DoB, DoA, Location_Id , DocId, Spect_only )
VALUES ( 21468097, 'ABCD\David', '04/15/2013', '06/13/1969', '02/18/2013', 8, 4, 0 );
INSERT INTO dbo.#Temp([Patient_ID],[Creator], [creation_dt], DoA, Location_Id , DocId, Spect_only)
VALUES (21478736, 'ABCD\NLisa', '04/29/2013', '04/26/2013', 5, 7, 0 );
INSERT INTO dbo.#Temp([Patient_ID],[Creator], [creation_dt], DoB, DoA, Location_Id , DocId, Spect_only)
VALUES (21478748, 'ABCD\NDavid', '01/25/2013', '04/14/1973', '03/24/2013', 5, 7, 1);
GO
/*
--patient
patient_id creator creation_dt DoB DoA Location_Id DocId Spect_only
----------- --------------- ----------------------- ----------------------- ----------------------- ----------- ----------- ----------
12999087 ABCD\dtaylor 2013-04-03 00:00:00.000 1967-05-10 00:00:00.000 2013-04-03 00:00:00.000 2 8 1
12999087 ABCD\KLe 2013-04-03 00:00:00.000 1967-05-10 00:00:00.000 2013-04-03 00:00:00.000 2 8 1
12999088 ABCD\LSmith 2013-04-11 00:00:00.000 1969-03-05 00:00:00.000 2013-04-06 00:00:00.000 7 4 0
21468044 ABCD\kmjala 2013-03-06 00:00:00.000 1969-03-05 00:00:00.000 2013-04-06 00:00:00.000 9 2 0
21478044 ABCD\John 2013-03-15 00:00:00.000 1971-10-07 00:00:00.000 2013-04-26 00:00:00.000 5 8 0
21468097 ABCD\David 2013-02-21 00:00:00.000 1969-06-13 00:00:00.000 2013-02-18 00:00:00.000 3 6 0
21468097 ABCD\David 2013-04-15 00:00:00.000 1969-06-13 00:00:00.000 2013-02-18 00:00:00.000 8 4 0
21478736 ABCD\NLisa 2013-04-29 00:00:00.000 NULL 2013-04-26 00:00:00.000 5 7 0
21478748 ABCD\NDavid 2013-01-25 00:00:00.000 1973-04-14 00:00:00.000 2013-03-24 00:00:00.000 5 7 1
SELECT *
FROM #Temp
go
SELECT * FROM #Diagnose
#Diagnose
patient_id
-----------
21468044
21478748
*/
/*
-- Rules:
if spect_only = 0 and patient_id exist in #Diagnose table and return it.
if spect_only = 1 return it, regardless exist in #Diagnose table or not.
if DoB, DoA and Location_id <> -1, and DocId <> 64 return it.
-- Desired output:
patient_id creator creation_dt DoB DoA Location_Id DocId Spect_only
----------- --------------- ----------------------- ----------------------- ----------------------- ----------- ----------- ----------
12999087 ABCD\dtaylor 2013-04-03 00:00:00.000 1967-05-10 00:00:00.000 2013-04-03 00:00:00.000 2 8 1
12999087 ABCD\KLe 2013-04-03 00:00:00.000 1967-05-10 00:00:00.000 2013-04-03 00:00:00.000 2 8 1
21468044 ABCD\kmjala 2013-03-06 00:00:00.000 1969-03-05 00:00:00.000 2013-04-06 00:00:00.000 9 2 0
21478044 ABCD\John 2013-03-15 00:00:00.000 1971-10-07 00:00:00.000 2013-04-26 00:00:00.000 5 8 0
21478748 ABCD\NDavid 2013-01-25 00:00:00.000 1973-04-14 00:00:00.000 2013-03-24 00:00:00.000 5 7 1
*/
-- Testing...
SELECT CASE
WHEN ( b.DoB > '' AND b.DoA > '' AND b.Location_Id <> - 1
AND b.Doctor_id <> 64 ) THEN 'Y'
ELSE 'N'
END AS 'Complete',
*
FROM #Temp
need to check in #Diagnose for spect_only = 0 then return it.↧
Need help with the TSQL.
↧