G
Guest
I need to compare the MCDID from one table to 2 other tables that contain
multiple rows for each member due to effective and expiration date changes
and return a single row with the member information for members whose MCDID
is in the first table and who were not active for october. A member may have
a row for being active in september and a row for november but was missed in
october. I wish I could explain this better so feel free to ask questions.
Thanks in advance,
Matt
Table 1 = LostMembers1005:
MCDID text
HealthPlan text
LastName text
FirstName text
DOB date
Table 2 = tmpLostMembers1005_1:
MCDID text
EffDate text as cyymmdd
ExpDate text as cyymmdd
Table 3 = tmpLostMembers1005_2:
MCDID text
CodeEffDate text as cyymmdd
CodeExpDate text as cyymmdd
Here are the 2 queries that I've tried.
--1
SELECT DISTINCT l.MCDID, l.HealthPlan, l.CarrierCode, l.LastName,
l.FirstName, l.DOB, e.Code, e.CodeEffDate AS [Tier Code EffDate], e.[Tier
Code ExpDate] AS [Tier Code ExpDate], m.EFFDATE AS [TXEN EFFDATE], m.EXPDATE
AS [TXEN EXPDATE] INTO tmpLostMembers1005_3
FROM (LostMembers1005 AS l INNER JOIN tmpLostMembers1005_1 AS m ON m.MCDID =
l.MCDID) INNER JOIN tmpLostMembers1005_2 AS e ON e.MCDID = l.MCDID
WHERE (2051001 NOT BETWEEN m.[TXEN EFFDATE] AND m.[TXEN EXPDAT]) AND
(2051001 NOT BETWEEN e.[Tier Code EffDate] AND e.[Tier Code ExpDate]) AND
(m.[TXEN EXPDAT] < 2051031) AND (e.[Tier Code ExpDate] < 2051031)
GROUP BY l.MCDID, l.HealthPlan, l.CarrierCode, l.LastName, l.FirstName,
l.DOB, e.[Tier Code], e.[Tier Code EffDate], e.[Tier Code ExpDate], m.[TXEN
EFFDAT], m.[TXEN EXPDAT];
--2 Final query to return the results
SELECT DISTINCT l.MCDID, m.HealthPlan, m.CarrierCode, m.LastName,
m.FirstName, m.DOB, m.[Tier Code], FormatDateUS(m.[Tier Code EffDate]) AS
[Tier EffDate], FormatDateUS(m.[Tier Code ExpDate]) AS [Tier ExpDate],
FormatDateUS(m.[TXEN EFFDAT]) AS [TXEN EFFDATE], FormatDateUS(m.[TXEN
EXPDAT]) AS [TXEN EXPDATE] INTO tmpLostMembers1005_4
FROM LostMembers1005 AS l INNER JOIN tmpLostMembers1005_3 AS m ON l.MCDID =
m.MCDID
WHERE ([Tier Code EffDate] = (SELECT MAX([Tier Code EffDate]) FROM
tmpLostMembers1005_3 WHERE tmpLostMembers1005_3.MCDID = l.MCDID)) AND ([TXEN
EXPDAT] = (Select Max([TXEN EXPDAT]) FROM tmpLostMembers1005_3 WHERE
tmpLostMembers1005_3.MCDID = l.MCDID))
GROUP BY l.MCDID, m.HealthPlan, m.CarrierCode, m.LastName, m.FirstName,
m.DOB, m.[Tier Code], m.[Tier Code EffDate], m.[Tier Code ExpDate], m.[TXEN
EFFDAT], m.[TXEN EXPDAT];
multiple rows for each member due to effective and expiration date changes
and return a single row with the member information for members whose MCDID
is in the first table and who were not active for october. A member may have
a row for being active in september and a row for november but was missed in
october. I wish I could explain this better so feel free to ask questions.
Thanks in advance,
Matt
Table 1 = LostMembers1005:
MCDID text
HealthPlan text
LastName text
FirstName text
DOB date
Table 2 = tmpLostMembers1005_1:
MCDID text
EffDate text as cyymmdd
ExpDate text as cyymmdd
Table 3 = tmpLostMembers1005_2:
MCDID text
CodeEffDate text as cyymmdd
CodeExpDate text as cyymmdd
Here are the 2 queries that I've tried.
--1
SELECT DISTINCT l.MCDID, l.HealthPlan, l.CarrierCode, l.LastName,
l.FirstName, l.DOB, e.Code, e.CodeEffDate AS [Tier Code EffDate], e.[Tier
Code ExpDate] AS [Tier Code ExpDate], m.EFFDATE AS [TXEN EFFDATE], m.EXPDATE
AS [TXEN EXPDATE] INTO tmpLostMembers1005_3
FROM (LostMembers1005 AS l INNER JOIN tmpLostMembers1005_1 AS m ON m.MCDID =
l.MCDID) INNER JOIN tmpLostMembers1005_2 AS e ON e.MCDID = l.MCDID
WHERE (2051001 NOT BETWEEN m.[TXEN EFFDATE] AND m.[TXEN EXPDAT]) AND
(2051001 NOT BETWEEN e.[Tier Code EffDate] AND e.[Tier Code ExpDate]) AND
(m.[TXEN EXPDAT] < 2051031) AND (e.[Tier Code ExpDate] < 2051031)
GROUP BY l.MCDID, l.HealthPlan, l.CarrierCode, l.LastName, l.FirstName,
l.DOB, e.[Tier Code], e.[Tier Code EffDate], e.[Tier Code ExpDate], m.[TXEN
EFFDAT], m.[TXEN EXPDAT];
--2 Final query to return the results
SELECT DISTINCT l.MCDID, m.HealthPlan, m.CarrierCode, m.LastName,
m.FirstName, m.DOB, m.[Tier Code], FormatDateUS(m.[Tier Code EffDate]) AS
[Tier EffDate], FormatDateUS(m.[Tier Code ExpDate]) AS [Tier ExpDate],
FormatDateUS(m.[TXEN EFFDAT]) AS [TXEN EFFDATE], FormatDateUS(m.[TXEN
EXPDAT]) AS [TXEN EXPDATE] INTO tmpLostMembers1005_4
FROM LostMembers1005 AS l INNER JOIN tmpLostMembers1005_3 AS m ON l.MCDID =
m.MCDID
WHERE ([Tier Code EffDate] = (SELECT MAX([Tier Code EffDate]) FROM
tmpLostMembers1005_3 WHERE tmpLostMembers1005_3.MCDID = l.MCDID)) AND ([TXEN
EXPDAT] = (Select Max([TXEN EXPDAT]) FROM tmpLostMembers1005_3 WHERE
tmpLostMembers1005_3.MCDID = l.MCDID))
GROUP BY l.MCDID, m.HealthPlan, m.CarrierCode, m.LastName, m.FirstName,
m.DOB, m.[Tier Code], m.[Tier Code EffDate], m.[Tier Code ExpDate], m.[TXEN
EFFDAT], m.[TXEN EXPDAT];