如何写出满足下面要求的SQL语句

我有两张表,第一张是finish,里面的每个人都会完成某个项目(列名pro)不定项的工作(列名:workid),每次工作都会得到1个评价。第二张是work,里面是所有工作(workid)的列表,所属于哪个项目(pro)。
我想把所有人的工作成绩反应出来,类似于:

成员 第一次(评价) 第二次 第三次 。。。 第N次(N不确定)
N取决于每个项目(pro)的worid的个数(这个是个变量,可取出,记作N)

请问如何把类似于:

成员 第一次(评价) 第二次 第三次 。。。 第N次(N不确定)
的表用sql写出来?
示意:简化后的表finish:
成员id workid 评价
1 w1
2 w1
3 w2
。。 。。
表work:
workid pro
w1 p1
w2 p1
w3 p1
w4 p3
。。 。。

我不能帮你得到是第几次工作的评价
但是我可以给你所有成员的所有项目工作的评价
如果要具体某个成员在某个项目的评价也能办到 先替你查出所有评价以及其他信息吧

select p.项目名(列),w.工作(列),w.评价(列) from pro as p
inner join work as w on(pro.workid=work.id)

work.id是指work表的编号 根据你所说的每个工作属于都属于项目 他们之间一定是建立了关系的 所以我就假设id是work表的编号
他本身也肯定有编号的

下面是显示单个的评价:
use 你的数据库

go

--查询是否存在名字为proc_find的存储过程
if exists(select * from sysobjects name ='proc_find')
drop proc proc_find--如果存在就删除

go
create proc proc_find --创建存储过程
--参数列表
(
@name nvarchar(10),---员工姓名
@procName varchar(50) ---项目名

)
as
set nocount on

select p.项目名(列),w.工作(列),w.评价(列) from pro as p
inner join work as w on(pro.workid=work.id)
where 员工姓名=@name and 项目名=@procName

go

/*调用存储过程查询员工“某某”在项目“某个项目”中的评价*/
exec proc_find '某某','某个项目'

或者

exec proc_find @name= '某某',@procName ='某个项目'

若果相信我 给我你的数据库表信息我会做得更好
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-23
单纯的sql肯定写不出来,需要用一些脚本之类的才可以做到,或者是存储过程,游标之类的东西都可以实现
第2个回答  2009-07-23
貌似是一个动态行转列的问题。
介于表述不清,就不浪费精力写代码了,网络上很多,搜下吧。
第3个回答  2009-07-23
你还是把两个表的表结构以及一些数据给出来,好帮你实现
相似回答