原始数据
content  start  end
Gene   17 7364
exon   17 57
exon   156 418
CDS  251 418
exon  1159   1257
CDS  1159 1257
exon   2259 2362
Gene   8020   9237
exon  8020   8862
CDS    8600   8862
exon  8954 9237
CDS  8954   9119
gene ..
......
第一步是提取每个gene中的exon
如 gene   17   7364
   exon   17   57
   exon   156  418
   exon   1159 1257
 ...
第二步是转换数据
       start end
 gene   17   7364
   exon   17   57(确定intron1的start)
   exon   156  418(确定intron1的end)
   exon   1159 1257
转换为 
         start end
gene     17  7364
intron1  58  155
intron2  419 1158
....
其中intron1 的start为每个gene中提取出的第一个exon的末端值+1 和第二个exon的起始值-1不知道说清楚了没有?

解决方案 »

  1.   

    用 case when 加group by 可以实现的。
      

  2.   

    能否详细说明一下,刚刚接触sql,好多还不是很懂.
      

  3.   

    再详细说一下:
    gene 在环境下所处的位置是 17-7364
    其中每个gene由exon 和intron组成并且exon和intron是交替排列的,CDs是exon中的一部分(不需要提取)
    如一个gene(17-7364)=exon1(17-57)+intron1(58-155)+exon2(156-418)+intron2(419-1158)+....目前原始数据中给出了每个gene的位置(起始位置和末端位置)
    我首先想从原始数据中提取每个gene的exon位置,并将exon转化为intron的位置
      

  4.   

    再简单的说一下,
    A=B1+C1+B2+C2+B3+C3
    已经给出的数据是A和B1,B2,B3.最终要的结果是C1,C2,C3.