我有一个查询,查询一个人使用的保险和服务日期。如果某人在同一确切日期使用过医疗保险和牙科保险,那么我只想计算一下医疗保险。
With medical as
( select p.person_nbr as PNum
, pe.date
, pm.payer
, 'Medical' as PayerGroup
from person p
JOIN patient_encounter pe on p.person_id = pe.person_id
JOIN payer_mstr pm on pe.payer_id = pe.payer_id
where pm.payer like '%Medical%'
--insert medical into and create temp table
SELECT
PNum
,Date
,Payer
,PayerGroup
INTO #WTEMP
FROM Medical;
With dental as
( select p.person_nbr as PNum
, pe.date
, pm.payer
,'Dental' as PayerGroup
from person p
JOIN patient_encounter pe on p.person_id = pe.person_id
JOIN payer_mstr pm on pe.payer_id = pe.payer_id
where pm.payer like '%Dental%'
--insert dental into temp table
SELECT
PNum
,Date
,Payer
,PayerGroup
INTO #WTEMP
FROM Dental;
--Pull from temp
select Pnum
,Date
,Payer
,PayerGroup
FROM #WTEMP
DROP TABLE #WTEMP;
如果那个人当天去看病,我基本上只是想消除牙科记录
答案 0 :(得分:0)
我会使用GROUP BY子句。
假设Payer
是“人员”,Date
是“服务日期”,则可以尝试:
从#WTEMP中选择Pnum,日期,付款人,PayerGroup 付款人分组,日期 删除表#WTEMP;
答案 1 :(得分:0)
您可以使用窗口功能,例如Row_Number(),按PNum和Date对数据进行分区,并按Payer对数据进行排序。
输出将是这样
abc, '2019-03-01', 'Medical', 1
abc, '2019-03-01', 'Dental', 2
过滤1's
注意:由于表已经创建,因此我不确定您的SELECT INTO #WTEMP是否对医疗和牙科都适用。