【发布时间】:2017-10-20 18:16:55
【问题描述】:
我有一张表格,其中包含针对 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 的索赔数量。当您搜索 100 万行并执行不同的操作时,我认为使用左外连接效率不高。有没有其他办法解决这个问题
【问题讨论】:
-
熟悉PIVOT函数。
-
hmmm... PIVOT 似乎不需要这种情况。 @KrzysztofKaszkowiak
-
你是对的。如果条件数不变,则不需要 PIVOT。
标签: sql sql-server join left-join distinct