17,086
社区成员
发帖
与我相关
我的任务
分享
select zonecode as zonecode,
nvl(t.chargesrc, '-1') as chargesrc ,
nvl(t.infectapp, '-1') as infectapp,
sum(t.counts) as counts,
sum(case
when t.flwcount = 1 then
1
else
0
end) as sumflw1,
sum(case
when t.flwcount = 2 then
1
else
0
end) as sumflw2, --完成两次
sum(case
when t.flwcount = 2 then
1
else
0
end) as sumflw3, --完成三次
sum(case
when t.flwcount = 2 then
1
else
0
end) as sumflw4, --完成四次
sum(case
when t.cd4count = 1 then
1
else
0
end) as cd41, --完成一次cd4
sum(case
when t.cd4count = 2 then
1
else
0
end) as cd42, --完成两次cd4
sum(case
when t.virunlncount = 1 then
1
else
0
end) as viruln1, --完成一次
sum(t.virunlnno) as noviruln ,--被抑制
sum(t.initvirunlncount) as avirulnsum
from (select a.card_id as card_id,
a.zonecode as zonecode,
a.chargesrc as chargesrc,
a.infectapp as infectapp,
sum(case
when a.dt_treatbegin <= to_date('2009-12-31', 'yyyy-mm-dd') and
a.tm_create <= to_date('2009-11-30', 'yyyy-mm-dd') then
1
else
0
end) as counts,
0 as flwcount, -- 当年完成次数
sum(case
when a.cd4 is not null and
a.dt_treatbegin <= to_date('2009-12-31', 'yyyy-mm-dd') and
a.tm_create <= to_date('2009-11-30', 'yyyy-mm-dd') then
1
else
0
end) as cd4count, --当年完成检测数
sum(case
when a.viruln is not null and
a.dt_treatbegin <= to_date('2009-12-31', 'yyyy-mm-dd') and
a.tm_create <= to_date('2009-11-30', 'yyyy-mm-dd') then
1
else
0
end) as virunlncount, --当年完成
0 as virunlnno,
sum(case
when a.viruln is not null and
a.dt_treatbegin <= to_date('2009-12-31', 'yyyy-mm-dd') and
a.tm_create <= to_date('2009-11-30', 'yyyy-mm-dd') then
1
else
0
end) as initvirunlncount
from aidszh_sgra_child_info a
where not exists (select ''
from aidszh_sgra_child_flw m
where a.card_id = m.card_id)
group by a.card_id, a.zonecode, a.chargesrc, a.infectapp
union all
select b.card_id,
b.zonecode as zonecode,
b.chargesrc as chargesrc,
b.infectapp as infectapp,
sum(case
when b.dt_treatbegin <= to_date('2009-12-31', 'yyyy-mm-dd') and
c.tm_create <= to_date('2009-11-30', 'yyyy-mm-dd') and
c.is_flw = '1' and c.clinic_treatment != '4' and ( d.end_cause <>'1' and d.end_cause <>'2' and d.end_cause<>'4' or d.end_cause is null ) then
1
else
0
end) as counts,
sum(case
when c.card_id is not null and
b.dt_treatbegin <= to_date('2009-12-31', 'yyyy-mm-dd') and
c.tm_create <= to_date('2009-11-30', 'yyyy-mm-dd') and
c.is_flw = '1' and c.clinic_treatment != '4' and ( d.end_cause <>'1' and d.end_cause <>'2' and d.end_cause<>'4' or d.end_cause is null ) then
1
else
0
end) as flwcount, --当年完成次数
sum(case
when c.cd4 is not null and
b.dt_treatbegin <= to_date('2009-12-31', 'yyyy-mm-dd') and
c.tm_create <= to_date('2009-11-30', 'yyyy-mm-dd') and
c.is_flw = '1' and c.clinic_treatment != '4' and ( d.end_cause <>'1' and d.end_cause <>'2' and d.end_cause<>'4' or d.end_cause is null ) then
1
else
0
end) as cd4count, --完成检测数
sum(case
when c.viruln is not null and
b.dt_treatbegin <= to_date('2009-12-31', 'yyyy-mm-dd') and
c.tm_create <= to_date('2009-11-30', 'yyyy-mm-dd') and
c.is_flw = '1' and c.clinic_treatment != '4' and ( d.end_cause <>'1' and d.end_cause <>'2' and d.end_cause<>'4' or d.end_cause is null ) then
1
else
0
end) as virunlncount,
sum(case
when b.viruln is not null and b.viruln <> '0' and
c.tm_create <= to_date('2009-11-30', 'yyyy-mm-dd') and
b.dt_treatbegin >= to_date('2009-01-01', 'yyyy-mm-dd') and
c.viruln = '0' and
(c.dt_flworinterp - b.dt_treatbegin >= 180) and
(c.dt_flworinterp - b.dt_treatbegin <= 360)
and c.is_flw = '1' and c.clinic_treatment != '4' and ( d.end_cause <>'1' and d.end_cause <>'2' and d.end_cause<>'4' or d.end_cause is null ) then
1
else
0
end) as virunlnno, --被抑制
sum(case
when b.viruln is not null and
b.dt_treatbegin >= to_date('2009-01-01', 'yyyy-mm-dd') and
c.tm_create <= to_date('2009-11-30', 'yyyy-mm-dd') and
c.is_flw = '1' and c.clinic_treatment != '3' and ( d.end_cause <>'1' and d.end_cause <>'2' and d.end_cause<>'4' or d.end_cause is null ) then
1
else
0
end) as initvirunlncount
from aidszh_sgra_child_info b, aidszh_sgra_child_flw c,aidszh_sgra_child_newstatus d
where b.card_id = c.card_id and d.card_id=b.card_id
group by b.card_id, b.zonecode, b.chargesrc, b.infectapp) t
group by zonecode,
nvl(t.chargesrc, '-1'),
nvl(t.infectapp, '-1')