求助SQL语句的写法,谢谢!

gerogeyzl 2007-08-16 04:15:37
问题如下:表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中两条记录变为一条记录显示出来? 
  请各位帮忙看看语句如何写?多谢!
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gerogeyzl 2007-08-17
  • 打赏
  • 举报
回复
要求选出结果:
ID F1 F3(2006) F3(2007)
1 v1 x1 x2
2 v2 x3 x4
..........
50 v50 x98 x990

gerogeyzl 2007-08-17
  • 打赏
  • 举报
回复
感谢两位。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
tangjiyu 2007-08-17
  • 打赏
  • 举报
回复
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
临摹 2007-08-16
  • 打赏
  • 举报
回复
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
gerogeyzl 2007-08-16
  • 打赏
  • 举报
回复
两个表结构大致如下:
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)

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧