당뇨병, 고혈압, 심부전 등 6 가지 질환에 대한 거의 백만 건의 청구 기록이있는 테이블이 있습니다. 모든 회원에게는 여러 가지 청구가 있습니다. 그는 당뇨병이나 고혈압 등의 질환에 대해 주장 할 수 있습니다. 내 목표는 모든 회원 행마다 보유한 조건 (클레임 수)을 그룹화하는 것입니다.
기존 테이블
+--------------+---------------+------+------------+
| Conditions | ConditionCode | ID | Member_Key |
+--------------+---------------+------+------------+
| DM | 3001 | 1212 | A1528 |
| HTN | 5001 | 1213 | A1528 |
| COPD | 6001 | 1214 | A1528 |
| DM | 3001 | 1215 | A1528 |
| CAD | 8001 | 1823 | B4354 |
| HTN | 5001 | 3458 | B4354 |
+--------------+---------------+------+------------+
원하는 결과
+------------+------+-----+----+----+-----+-----+
| Member_Key | COPD | CAD | DM | HF | CHF | HTN |
+------------+------+-----+----+----+-----+-----+
| A1528 | 1 | | 2 | | | 1 |
| B4354 | | 1 | | | | 1 |
+------------+------+-----+----+----+-----+-----+
질문
select distinct tr.Member_Key,C.COPD,D.CAD,DM.DM,HF.HF,CHF.CHF,HTN.HTN
FROM myTable tr
--COPD
left outer join (select Member_Key,'X' as COPD
FROM myTable
where Condition=6001) C
on C.Member_Key=tr.Member_Key
--CAD
left outer join ( ....
지금은 'X'를 사용하고 있습니다. 하지만 조건에 따라 X 대신 클레임 수를 얻으려고합니다. 1 백만 개의 행을 검색하고 구별 할 때 왼쪽 외부 조인을 사용하는 것이 효율적이라고 생각하지 않습니다. 이 문제를 해결하는 데 다른 접근 방식이 있습니까?
너무 많은 하위 쿼리를 원하지는 않습니다. group by 및 case 문을 사용하면 쉽습니다.
SELECT Member_Key
SUM(CASE WHEN Condition=6001 THEN 1 ELSE 0 END) AS COPD,
SUM(CASE WHEN Condition=3001 THEN 1 ELSE 0 END) AS DM,
SUM(CASE WHEN Condition=5001 THEN 1 ELSE 0 END) AS HTN,
SUM(CASE WHEN Condition=8001 THEN 1 ELSE 0 END) AS CAD
FROM myTable
GROUP BY Member_Key
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다