数据库查询的问题,各位进来帮个忙啊

renxiaoyao868 2008-08-02 03:45:16
最好给出个SQL语句,谢了先
在 SQL SERVER2000有如下表:


ID NAME OC_POINT YEARS
1 张三 60 2007
2 李四 66 2007
3 王五 70 2007
4 赵六 78 2007
5 张三 76 2008
6 李四 77 2008
7 王五 67 2008
8 赵六 66 2008

想通过查询获得如下结果:

ID NAME OC_POINT YEARS
1 张三 60 2007
2 李四 66 2007
3 王五 70 2007
4 赵六 78 2007
5 张三 76 2008
6 李四 77 2008
7 王五 67 2008
8 赵六 66 2008
...全文
117 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
renxiaoyao868 2008-08-04
  • 打赏
  • 举报
回复
下面把测试数据写下:
create table A (
NAME nvarchar(20),
OC_POINT float,
YEARS nvarchar(20)

)

insert into A values('aaa',54,'2007');
insert into A values('bbb',45,'2007');
insert into A values('ccc',34,'2007');
insert into A values('aaa',77,'2008');
insert into A values('bbb',86,'2008');
insert into A values('ccc',34,'2008');



SELECT A1.NAME,A1.OC_POINT AS [2007],A2.OC_POINT AS [2008] FROM
(SELECT NAME , OC_POINT FROM A WHERE YEARs=2007) A1,
(SELECT NAME , OC_POINT FROM A WHERE YEARs=2008) A2
WHERE A1.NAME = A2.NAME
ORDER BY A1.OC_POINT ASC;
renxiaoyao868 2008-08-04
  • 打赏
  • 举报
回复
啊 不好意思是我写错了 果然可以
renxiaoyao868 2008-08-04
  • 打赏
  • 举报
回复
谢谢 各位
select a.id,a.name,a.oc_point,b.oc_point from (select * from 表名 where year=2007) a,(select id,name from 表名 where year=2008) b where a.name=b.name
在我这里出错 说子查询中不能有表达式

xian_hf 2008-08-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yongxing14 的回复:]
select a.id,a.name,a.oc_point,b.oc_point from (select * from 表名 where year=2007) a,(select id,name from 表名 where year=2008) b where a.name=b.name
试试这个可以不,应该没问题吧.可能有点麻烦,不过好理解.
[/Quote]

这样是可以,好像不是这样的效果,年份是不确定的
是不是先要把所有年份查一下
yongxing14 2008-08-02
  • 打赏
  • 举报
回复
select a.id,a.name,a.oc_point as 2007,b.oc_point as 2008 from (select * from 表名 where year=2007) a,(select name,oc_point from 表名 where year=2008) b where a.name=b.name
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yongxing14 的回复:]
select a.id,a.name,a.oc_point,b.oc_point from (select * from 表名 where year=2007) a,(select id,name from 表名 where year=2008) b where a.name=b.name
试试这个可以不,应该没问题吧.可能有点麻烦,不过好理解.
[/Quote]
顶。
yongxing14 2008-08-02
  • 打赏
  • 举报
回复
上边的b里边把id改成oc_point
yongxing14 2008-08-02
  • 打赏
  • 举报
回复
select a.id,a.name,a.oc_point,b.oc_point from (select * from 表名 where year=2007) a,(select id,name from 表名 where year=2008) b where a.name=b.name
试试这个可以不,应该没问题吧.可能有点麻烦,不过好理解.
kittaaron 2008-08-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 valen_jia 的回复:]
select ID,(distinct)NAME,OC_POINT,YEARS from ....
[/Quote]
valen_jia 2008-08-02
  • 打赏
  • 举报
回复
select ID,(distinct)NAME,OC_POINT,YEARS from ....
renxiaoyao868 2008-08-02
  • 打赏
  • 举报
回复
按照这个结构输出啊
ID NAME 2007 2008
1 张三 60 76
2 李四 66 77
3 王五 70 67
4 赵六 78 66
  • 打赏
  • 举报
回复
你说清楚你想按照什么输出不就好了。。。
renxiaoyao868 2008-08-02
  • 打赏
  • 举报
回复
顶下
renxiaoyao868 2008-08-02
  • 打赏
  • 举报
回复
自己顶下
renxiaoyao868 2008-08-02
  • 打赏
  • 举报
回复
不好意思上面的查询结果应是:

ID NAME 2007 2008
1 张三 60 76
2 李四 66 77
3 王五 70 67
4 赵六 78 66

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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