如果年份很少使用decode可以一条语句办到
如果年份不确定,则需要用过程。

解决方案 »

  1.   

    我Oracle不熟,您要是有时间的话能否给我各举一例呀?
    非常感谢
      

  2.   

    SELECT DECODE(YEAR,2000,MYDATA) 2000,DECODE(YEAR,2001,MYDATA) 2001,
    DECODE(YEAR,2002,MYDATA) 2002 FROM A;
      

  3.   

    楼上兄弟,你的SQL会得到3条记录而非1条。SQL> SELECT DECODE(YEAR,2000,MYDATA) a2000,DECODE(YEAR,2001,MYDATA) a2001,
      2  DECODE(YEAR,2002,MYDATA) a2002 FROM temp;     A2000      A2001      A2002
    ---------- ---------- ----------
          1000
                     1110
                                1210若想只得到一条记录,需要利用GROUP类函数
    SELECT MAX(DECODE(YEAR,2000,MYDATA)) a2000,MAX(DECODE(YEAR,2001,MYDATA)) a2001,MAX(DECODE(YEAR,2002,MYDATA)) a2002 
    FROM temp;
      

  4.   

    聚集函数是必要的。如max,min,sum
      

  5.   

    漏掉了,JIEZHI说的那几个函数,随便加一个就可以了
      

  6.   

    大侠们,DECODE(YEAR,2000,MYDATA) 2000
    这样写不行呀~~~写成2000年也不行~~难道不能已数字开头吗?有办法解决吗?
      

  7.   

    好像字段名不能以数字开头,你为什么不改为Year2000 or Y2000呢?
      

  8.   

    因为我想用一个控件直接跟他绑定,用户希望看到的是2000而不是Year2000啊
    而且年份是动态的:(
    所以我必须要2000这样的啊,没办法解决吗?