0
我想讓這個sql邏輯工作,最後一部分是我沒有我的邏輯正確的地方。Cognos Report Studio 10.2.2 case語句sql邏輯
我需要爲已列爲ID_1 & ID_2的提供程序重新提供重新發送。如果一個人在30天內有重新發帖,那麼即使他們去了另一個地方,他們也會得到一個readmit_conf_30號碼。如果他們在30天之內有重新發帖,我需要在報告中包含原始提供商號碼和其他提供商。
我已經嘗試了很多方法,並且對如何使用它而感到茫然。 Group1適用於我在尋找的提供商。 Group2適用於其他提供商。第3組將它們組合在一起,第4組我嘗試將它們分配給Y/N,無論我是否希望他們報告。這是我需要案例邏輯幫助的地方。
感謝您的幫助。
代碼:
WITH Group1 AS
(
SELECT
A.MEMBER, B.SEX, B.DOB, B.LAST_NAME, B.FIRST_NAME,
A.PROVIDER_ID, C.PROVIDER_NAME, A.CONF_NUM, A.BEG_DT, A.END_DT, A.TOS_I_4, A.DIS_STAT, A.AMT_EQV, A.AMT_PAY, A.AMT_REQ
, A.READMIT_INDEX_30, A.READMIT_30, A.READMIT_CONF_30, '04/30/2014' as DateCheck
, '341425870018' AS ID_1
, '341425870052' AS ID_2
FROM CONFINEMENTS A
LEFT JOIN MEMINFO B ON A.MEMBER = B.MEMBER
LEFT JOIN PROVINFO C ON A.PROVIDER_ID = C.PROVIDER_ID
LEFT JOIN MAP_DATE_RANGE D ON D.IA_TIME = A.IA_TIME
WHERE
A.CUST_OPL_MED IN ('A$*', 'B$*', 'N$*', 'P$*', 'D$*', ' 'Unspecified$UNK')
AND A.BEG_DT >= '05/01/2013' and A.beg_dt <'05/01/2014'
and A.PROVIDER_ID Like '341425870%'
and (A.READMIT_30 = 1 OR A.READMIT_30 = 0)
--AND A.DIS_STAT <> 20
),
GROUP2 AS (
SELECT
A.MEMBER, B.SEX, B.DOB, B.LAST_NAME, B.FIRST_NAME, A.PROVIDER_ID, C.PROVIDER_NAME
, A.CONF_NUM, A.BEG_DT, A.END_DT, A.TOS_I_4, A.DIS_STAT, A.AMT_EQV, A.AMT_PAY, A.AMT_REQ
, A.READMIT_INDEX_30, A.READMIT_30, A.READMIT_CONF_30, '04/30/2014' as DateCheck
, '341425870018' AS ID_1
, '341425870052' AS ID_2
FROM CONFINEMENTS A
LEFT JOIN MEMINFO B ON A.MEMBER = B.MEMBER
LEFT JOIN PROVINFO C ON A.PROVIDER_ID = C.PROVIDER_ID
LEFT JOIN MAP_DATE_RANGE D ON D.IA_TIME = A.IA_TIME
WHERE
A.CUST_OPL_MED IN ('A$*', 'B$*', 'N$*', 'P$*', 'D$*', 'Unspecified$UNK')
AND A.BEG_DT >= '05/01/2013' and A.beg_dt <'05/01/2014'
--and A.PROVIDER_ID Like '341425870%'
and (A.READMIT_30 = 1 OR A.READMIT_30 = 0)
--AND A.DIS_STAT <> 20
),
GROUP3 AS (
Select *, DATEADD(dd, 30, datecheck) AS MaxdateAllowed from Group1
union
select *, DATEADD(dd, 30, datecheck) AS MaxdateAllowed from GROUP2
),
Group4 AS (
select *
, case when PROVIDER_ID <> ID_1 and readmit_conf_30 is not null THEN 'Y'
when PROVIDER_ID <> ID_2 and readmit_conf_30 is not null THEN 'Y'
when PROVIDER_ID = ID_1 and readmit_conf_30 is not null THEN 'Y'
when PROVIDER_ID = ID_2 and readmit_conf_30 is not null THEN 'Y'
when PROVIDER_ID = ID_1 THEN 'Y'
when PROVIDER_ID = ID_2 THEN 'Y'
when PROVIDER_ID <> ID_1 THEN 'N'
when PROVIDER_ID <> ID_2 THEN 'N'
ELSE 'B'
END AS GoodRecord
FROM Group3
where maxdateallowed > beg_dt and READMIT_INDEX_30 = 1
--and (READMIT_30 = 1 OR READMIT_30 = 0)
)
SELECT * FROM Group4
WHERE GoodRecord = 'Y'
order by conf_num