一个SQL语句问题(有点难度)100分请教 我有一个表:项目编号,项目名称,专家编号,专家名称,打分第一个项目都有10个专家打分,我想查询出这种效果或用这种格式打印!: 项目编号 项目名称 专家1,专家2,专家3专家10 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select 项目编号,项目名称,(select 打分 from table where 专家编号=专家1的编号 and 项目编号=tb.项目编号),(select 打分 from table where 专家编号=专家2的编号 and 项目编号=tb.项目编号), . . .(select 打分 from table where 专家编号=专家10的编号 and 项目编号=tb.项目编号)from table as tb group by 项目编号,项目名称 sql实现比较麻烦,可能效率不会很高。我用report machine 实现过类似的报表,应该也是能实现你这个的,不过是个收费的组件。 用SQL命令不好解决,这样吧,用一段程序解决吧。先建一个临时库tmp结构为:项目编号 项目名称 专家1,专家2,专家3专家10然后 insert into tmp(项目编号,项目名称 ) select 项目编号,项目名称 (distinct 项目编号) from old //原来的库然后再用循环来补充各个专家的打分 while(not eof(old)) if 专家名称=专家1 update tmp 专家1=old.打分。 where old.项目编号=tmp.项目编号 else if 专家名称=专家2 update tmp 专家2=old.打分。 where old.项目编号=tmp.项目编号.................................. enfif 你试试行不? 再输出就可以了select . from tmp to print 你把你的数据-->excel 文件,发到我的信箱([email protected])里,我给做!! 或者做九次迪卡尔积也就是select from old as x,old as y, old as z.................九个。//old为原库where x.项目编号=y,项目编号 and y.项目编号=z.项目编号 and ........九个。。 select a.项目编号,a.项目名称,b.专家,b.打分,c.专家,c.打分 from table a,(select 专家 from table where 项目编号= '01') b ............. 我觉得 lyguo(初学者) 的办法不错,可以试试看。但是 xiufengy(石破天) 的代码实在是太长了,。 看起来比较吃力,最好解释一下。:-)))还有我觉得既然一个项目需要10个专家打分 这个数据库的表结构就有点不合适。 为什么我用delphi7编译DLL会出现这种状况 DBGRID数据导入到EXCEL的问题,字段长度有无限制。急!急!急! Delphi或BCB中如何安装MapX delphi皮肤控件问题: 请教,这语句if sender=freshname是什么意思? delphi里面往一个字符串里添加数个相同字符的函数是什么? 如何让窗口上的关闭图标变为灰色不可点击? 新手问题,请大家忙解释一下 Edit控件的OnEnter事件中打开一个新窗体后如何重获焦点? 谁帮忙把这几行C翻成Delphi,我可以看懂,就是不会翻成Delphi! 初学delphi,有点迷茫 高分求教公式解析器的问题!
(select 打分 from table where 专家编号=专家1的编号 and 项目编号=tb.项目编号),
(select 打分 from table where 专家编号=专家2的编号 and 项目编号=tb.项目编号),
.
.
.
(select 打分 from table where 专家编号=专家10的编号 and 项目编号=tb.项目编号)
from table as tb group by 项目编号,项目名称
我用report machine 实现过类似的报表,应该也是能实现你这个的,不过是个收费的组件。
先建一个临时库tmp结构为:项目编号 项目名称 专家1,专家2,专家3专家10
然后
insert into tmp(项目编号,项目名称 )
select 项目编号,项目名称 (distinct 项目编号)
from old //原来的库
然后再用循环来补充各个专家的打分
while(not eof(old))
if 专家名称=专家1
update tmp 专家1=old.打分。
where old.项目编号=tmp.项目编号
else if 专家名称=专家2
update tmp 专家2=old.打分。
where old.项目编号=tmp.项目编号
..................
................
enfif
你试试行不?
select .
from tmp
to print
也就是select
from old as x,old as y, old as z.................九个。//old为原库
where x.项目编号=y,项目编号 and y.项目编号=z.项目编号 and ........九个。
。