sql - How to move different value of src column to different columns -
i have following data
sk_patient casenumber src status pen_dt -1 2345 popdb closed 2012-01-01 -1 235 popdb closed 2012-01-01 -1 245 jcare closed 2012-01-02 1244 2 popdb closed 2012-01-01 273 2345 popdb closed 2012-03-04 1244 23 jcare closed 2012-05-02
which needs converted following on basis of different src
column value.
sk_patient casenumber1 src1 status1 pen_dt1 casenumber2 src2 status2 pen_dt2 -1 2345 popdb closed 2012-01-01 245 jcare closed 2012-01-02 -1 235 popdb closed 2012-01-01 null null null null 1244 2 popdb closed 2012-01-01 23 jcare closed 2012-05-02 273 2345 popdb closed 2012-03-04 null null null null
for example,
for -1
have 3 rows, 2 of them has same src
, them is, 3 row has different value. so, needs moved src2
column , associated column values well.
there minimum 1 , maximum 3 different src
can associated specific sk_patient
.
===update===
till now, able following
seq sk_patient casenumber src status pen_dt 2 -1 2345 popdb closed 2012-01-01 2 -1 235 popdb closed 2012-01-01 1 -1 245 jcare closed 2012-01-02 2 1244 2 popdb closed 2012-01-01 1 273 2345 popdb closed 2012-03-04 1 1244 23 jcare closed 2012-05-02
i have used following query
select dense_rank() over(partition sk_patient order sk_patient, src) seq, * patient
could me move value above example ?
select tp1.sk_patient, tp1.casenumber casenumber1, tp1.src src1, tp1.status status1, tp1.pen_dt pen_dt1, tp2.casenumber2, tp2.src2, tp2.status2, tp2.pen_dt2 t_patient tp1 left outer join (select sk_patient, max(case when rnum = 1 casenumber end) casenumber1, max(case when rnum = 1 src end) src1, max(case when rnum = 1 status end) status1, max(case when rnum = 1 pen_dt end) pen_dt1, max(case when rnum = 2 casenumber end) casenumber2, max(case when rnum = 2 src end) src2, max(case when rnum = 2 status end) status2, max(case when rnum = 2 pen_dt end) pen_dt2 (select *, dense_rank() on (partition sk_patient order src desc) rnum t_patient ) t group sk_patient ) tp2 on tp1.sk_patient = tp2.sk_patient , tp1.casenumber = tp2.casenumber1 , tp1.src = tp2.src1 tp1.src != 'jcare'
result
sk_patient casenumber1 src1 status1 pen_dt1 casenumber2 src2 status2 pen_dt2 -1 2345 popdb closed 2012-01-01 245 jcare closed 2012-01-02 -1 235 popdb closed 2012-01-01 null null null null 1244 2 popdb closed 2012-01-01 23 jcare closed 2012-05-02 273 2345 popdb closed 2012-03-04 null null null null
Comments
Post a Comment