以下の SQL クエリがあり、Consult、SIM、PLAN、TreatmentStart、および TreatmentFinish の結果が複数あることがわかりました。
MAX
最新の結果のみを表示しますが、Planning は TreatmentStart の直前の日付を表示し、SIM は Plan の日付の直前の日付を表示します。
開始日は、最新の TreatmentStart 日付に基づいています。
完了するのに2分以上かかる長くて複雑なSQLクエリを書いたので、誰かが私を正しい方向に向けることができるかどうか疑問に思っています...
クエリは次のとおりです。
SELECT s.Pat_Name, s.IDA, s.Pat_ID1,
ShortDesc = MAX(CASE WHEN s.SysDefStatus = 'SC' THEN s.Short_Desc END),
Consult = MAX(CASE WHEN s.Activity = '123'
AND s.SysDefStatus = 'C' THEN s.App_DtTm END),
SIM = MAX(CASE WHEN s.Activity = '456'
THEN s.App_DtTm END),
PLANNING = MAX(CASE WHEN s.Activity = '789'
THEN s.App_DtTm END),
TreatmentStart = MAX(CASE WHEN s.SysDefStatus = 'SC' THEN s.App_DtTm END),
TreatmentFinished = MAX(CASE WHEN s.SysDefStatus = 'FC' THEN s.App_DtTm END)
FROM vw_Schedule s
WHERE s.Activity IN ('123', '456', '789')
OR s.SysDefStatus IN ('SC', 'FC', 'C')
GROUP BY s.Pat_Name, s.IDA, s.Pat_ID1
)
SELECT Pat_Name,
IDA,
Tx_Intent,
ShortDesc,
Consult,
Days = (DATEDIFF(dd, Consult, SIM)+1)-(DATEDIFF(wk, Consult, SIM)*2),
SIM,
Days = (DATEDIFF(dd, SIM, PLANNING)+1)-(DATEDIFF(wk, SIM, PLANNING)*2),
PLANNING,
Days = (DATEDIFF(dd, PLANNING, TreatmentStart)+1)-(DATEDIFF(wk, PLANNING, TreatmentStart)*2),
TreatmentStart,
Days = (DATEDIFF(dd, TreatmentStart, TreatmentFinished)+1)-(DATEDIFF(wk, TreatmentStart, TreatmentFinished)*2),
TreatmentFinished
FROM T;