问题如下:表T1中有字段ID(唯一健)等字段,ID值分别为1到50,共50条记录;表T2中有关联字段ID、Year等字段,共100条记录,ID取(1到50),Year取值分别为2006,2007。这样,表T2共有100条记录。
  想通过一条语句从T1、T2中选取如下50条记录:字段顺序为: ID,T1中其它字段,Year(=2006)时T2中其它字段,Year(=2007)时T2中其它字段。即相当于将T2中两条记录变为一条记录显示出来? 
  请各位帮忙看看语句如何写?多谢!

解决方案 »

  1.   

    两个表结构大致如下:
    T1:
    ID   F1
    1    v1
    2    v2
    ....
    50   v50
    T2:
    ID   Year  F3
    1    2006  x1
    1    2007  x2
    2    2006  x3
    2    2007  x4
    ....
    50    2006  x98
    50    2006  x99要求选出结果:
    ID  F1 F3(2006)  F3(2007)
      

  2.   

    CREATE TABLE T1(ID INTEGER,F1 VARCHAR2(10));
    INSERT INTO T1 VALUES(1,'v1');
    INSERT INTO T1 VALUES(2,'v2');
    INSERT INTO T1 VALUES(50,'v50');
    COMMIT;CREATE TABLE T2(ID INTEGER,Year INTEGER,F3 VARCHAR2(10));
    INSERT INTO T2 VALUES(1,2006,'x1');
    INSERT INTO T2 VALUES(1,2007,'x2');
    INSERT INTO T2 VALUES(2,2006,'x3');
    INSERT INTO T2 VALUES(2,2007,'x4');
    INSERT INTO T2 VALUES(50,2006,'x98');
    INSERT INTO T2 VALUES(50,2006,'x99');
    COMMIT;SELECT T1.ID,T1.F1,TA.F3 "F3(2006)",TB.F3 "F3(2007)"
    FROM (SELECT ID,F3 FROM T2 WHERE YEAR=2006)TA,
         (SELECT ID,F3 FROM T2 WHERE YEAR=2007)TB,
         T1
    WHERE T1.ID=TA.ID(+) AND T1.ID=TB.ID(+);        ID F1         F3(2006)   F3(2007)
    ---------- ---------- ---------- ----------
             1 v1         x1         x2
             2 v2         x3         x4
            50 v50        x98
            50 v50        x99
      

  3.   

    select a.id,a.f1,decode(b.year,2006,b.f3,'') as f3(2006),
          decode(b.year,2007,b.f3,'') as f3(2007)
    from t1 a ,t2 b 
    where a.id=b.id
      

  4.   

    感谢两位。79bo(山芋) 子查询的方法可行,选出来为50行,且结果正确。
    tangjiyu(小雨) 的方法好像选出来的不是我想要的那种格式,有100行了。
    我的本意是:两个表结构大致如下:
    T1:
    ID   F1
    1    v1
    2    v2
    ....
    50   v50
    T2:
    ID   Year  F3
    1    2006  x1
    1    2007  x2
    2    2006  x3
    2    2007  x4
    ....
    50    2006  x98
    50    2007  x99要求选出结果:
    ID  F1 F3(2006)  F3(2007)
    1   v1  x1
      

  5.   

    要求选出结果:
    ID  F1   F3(2006)  F3(2007)
    1   v1     x1       x2
    2   v2     x3       x4
    ..........
    50  v50    x98      x990