问题如下:表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中两条记录变为一条记录显示出来?
请各位帮忙看看语句如何写?多谢!
想通过一条语句从T1、T2中选取如下50条记录:字段顺序为: ID,T1中其它字段,Year(=2006)时T2中其它字段,Year(=2007)时T2中其它字段。即相当于将T2中两条记录变为一条记录显示出来?
请各位帮忙看看语句如何写?多谢!
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)
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
decode(b.year,2007,b.f3,'') as f3(2007)
from t1 a ,t2 b
where a.id=b.id
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
ID F1 F3(2006) F3(2007)
1 v1 x1 x2
2 v2 x3 x4
..........
50 v50 x98 x990