私は開発にかなり慣れていないので、質問がばかげている場合は申し訳ありません。多くの列を結合しましたが、1 対多の関係テーブル間の結合もあります。とにかく、私が今得ている出力は
Patient_Name episode_id DOB primary_insu sec_insur patient_id
name, 001 03-29-1956 MEDICAID NULL 12
name, 001 03-29-1956 NULL STATEPROB 12
name2 001 02-20-1981 AETNA NULL 13
name2 001 02-20-1981 NULL MEDICAID 13
患者 ID に対して一次保険と二次保険の 2 つの保険のレコードを持つテーブルがあります。患者 ID ごとに 1 行で表示する方法はありますか。
現在のクエリ...
SELECT LTRIM(RTRIM(isnull(pat.LNAME, ''))) + ', ' + LTRIM(RTRIM(isnull(pat.FNAME, ''))) + ', ' + LTRIM(RTRIM(isnull(pat.MNAME, ''))) AS Patient_Name,
pat.episode_id,
CONVERT (VARCHAR (11), pat.dob, 110) AS DOB,
CASE
WHEN covh.copay_priority = '1' THEN covp.payor_ID ELSE NULL
END AS primary_insu,
CASE
WHEN covh.copay_priority = '2' THEN covp.payor_ID
END AS sec_insur
FROM Patient AS pat WITH (NOLOCK)
INNER JOIN
coverage_history AS covh WITH (NOLOCK)
ON pat.patient_id = covh.patient_id
AND pat.episode_id = covh.episode_id
INNER JOIN
coverage AS cov WITH (NOLOCK)
ON cov.patient_id = covh.patient_id
AND cov.episode_id = covh.episode_id
AND cov.hosp_status_code = covh.hosp_status_code
AND cov.coverage_plan_id = covh.coverage_plan_id
LEFT OUTER JOIN
coverage_plan AS covp WITH (NOLOCK)
ON covp.coverage_plan_id = covh.coverage_plan_id
AND covp.hosp_status_code = covh.hosp_status_code
WHERE covh.hosp_status_code = 'op'
AND (covh.effective_to IS NULL
OR covh.effective_to > GETDATE());