2011-07-22 73 views
0

行作爲列我有兩行如下所示如何追加在vb.net

regn_no date   name Adress 
5001  15 may 2010 A  xyz 
5001  13 jan 2011 B  ABC 
5001  14 july 2011 C  PQR 

因爲regn_no等於我想以更大的日期添加行到下日期。 我想要的結果如下

regn_no date  name Adress new_name new_Adress new_name2 add_2 
5001  14 july 2011 A  xyz  B   ABC  C  PQR 

請幫 預先感謝您

+0

哪個版本的你用的是VB嗎? –

回答

1

這是比較容易做到這一點在甲骨文(而不是VB.net),由於Oracle自帶的內置函數此。但是,還需要考慮更多的場景。

  • 如果您對給定ID有多個更改,該怎麼辦?您想要在多列中顯示它,還是更改爲「更改跟蹤」顯示,其中顯示每個更改的舊值和新值?

  • 對於最後一行(15日的那一行),不會有新地址,因此它將爲空。如果你不想挑選,你需要添加一個條件(見第二查詢..)

    with t1 as (
    select 5001 regn_no, to_date('15-May-2010','DD-Mon-YYYY') date1, 
         'A' name, 'XYZ' Address from dual 
    union all 
    select 5001 regn_no, to_date('13-May-2010','DD-Mon-YYYY') date1, 
         'B' name, 'ABC' address from dual) 
    select t1.regn_no, t1.date1, t1.name, t1.address, 
         lead(t1.name) over (partition by t1.regn_no 
              order by t1.date1 asc) new_name, 
         lead(t1.Address) over (partition by t1.regn_no 
              order by t1.date1 asc) new_Address 
        from t1 
    
  • REGN_NO DATE1ň加正新

    5001 13-MAY-10 B ABC A XYZ 
         5001 15-MAY-10 A XYZ 
    

    與T1爲( select 5001 regn_no,to_date('15-May-2010','DD-Mon-YYYY')date1, 'A'name,'XYZ'Address from dual union all select 5001 regn_no,to_date('13 - 'DD-Mon-YYYY')date1, 'B'name,'ABC'address from dual) select * f rom( select t1.regn_no,t1.date1,t1.name,t1.address, lead(t1.name)over(partition by t1.regn_no order by t1.date1 asc)new_name, lead(t1.Address )以上(從t1 分區由t1.regn_no 爲了通過t1.date1 ASC)NEW_ADDRESS )其中不(NEW_NAME爲空和NEW_ADDRESS爲null) / REGN_NO DATE1ñADD N個新


    5001 13-MAY-10 B ABC A XYZ 
    
+0

格式化似乎沒有工作......如有需要,請隨時編輯此帖。 –

+0

我想要在vb.net中使用append keywork來做 – comkalp

+0

某人plz幫助我 – comkalp