简而言之,我有两个表:
(1)pharmacy_claims
(列:user_id
,date_service
,claim_id
,record_id
,prescription
)
(2)medical_claims
(列:user_id
,date_service
,provider
,npi
,cost
)
我想在(1)中找到具有某个user_id
值的prescription
,找到它们最早的date_service
(例如min(date_service)
),然后使用这些{ {1}}以其最早的服务日期为队列,从(2)中提取所有与其关联的数据。基本上,我想在user_id
中首次给他们开出给定处方之前找到他们的所有medical_claims
数据。
pharmacy_claims
看起来像这样:
pharmacy_claims
因此,例如,如果我对prescription ='a'感兴趣,我只希望返回user_id 1和2,日期分别为2018-02-11和2019-01-02。然后,我想从user_id | prescription | date_service
1 a 2018-05-01
1 a 2018-02-11
1 a 2019-10-11
1 b 2018-07-12
2 a 2019-01-02
2 a 2019-03-10
2 c 2018-04-11
3 c 2019-05-26
中提取user_id 1和2,并在这些日期之前获取其所有数据。
我尝试执行此操作的方法是在medical_claims
表中建立一个临时表,以查询具有给定药物的pharmacy_claims
,然后将其退回到表以创建包含user_id
的一组user_id
这就是我所做的:
(1)从主要药房索赔表中提取了所有相关数据:
date_service
这导致〜50,000 CREATE TABLE user.temp_pharmacy_claims AS
SELECT user_id,claim_id,record_id,date_service
FROM dw.pharmacyclaims
WHERE date_service between '2018-01-01' and '2019-08-31'
个
(2)创建了一个仅以user_id
为user_id
的表:
min(date_service)
(3)创建了一个最终表(以获得所需的同类群组):
CREATE TABLE user.temp_pharmacy_claims_index AS
SELECT distinct user_id,min(date_service) AS Min_Date
FROM user.temp_pharmacy_claims
GROUP BY 1
但是,当应该有几千个时,这使我得到0个结果。这个设置正确吗?这可能不是最有效的方法,但对我来说听起来不错,所以不确定发生了什么。