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

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -