以下如何处理?

ruhong 2014-03-29 08:11:15
表a

序号 完成人 日期 完成效率 完成质量 难易度 组号
1 王x 2-11 3 5 6 a
2 李x 2-12 4 7 8 a

表b
评分序号 组号 评分项目 评分比例
1 a 完成效率 0.2
2 a 完成质量 0.4
3 a 难易度 0.4
4 b x x
.
.
.
想得到这样一个结果
序号 完成人 日期 完成效率 完成质量 难易度 总分
1 王x 2-11 3 5 6 完成效率*0.2+完成质量*0.4+难度易*0.4
2 李x 2-12 4 7 8 完成效率*0.2+完成质量*0.4+难度易*0.4




...全文
158 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruhong 2014-03-30
  • 打赏
  • 举报
回复
谢谢各位爷。ccc
myue 2014-03-29
  • 打赏
  • 举报
回复
 
SELECT     *,
 a.完成效率* (SELECT 评分比例 FROM b WHERE 评分项目='完成效率')+
 a.完成质量* (SELECT 评分比例 FROM b WHERE 评分项目='完成质量')+
 a.难易度  * (SELECT 评分比例 FROM b WHERE 评分项目='难易度')
  FROM a 
--小F-- 2014-03-29
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author  :fredrickhu(小F,向高手学习)
-- Date    :2014-03-29 09:28:52
-- Verstion:
--      Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
--	Jul  9 2008 14:43:34 
--	Copyright (c) 1988-2008 Microsoft Corporation
--	Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[a]
if object_id('[a]') is not null drop table [a]
go 
create table [a]([序号] int,[完成人] varchar(3),[日期] varchar(4),[完成效率] int,[完成质量] int,[难易度] int,[组号] varchar(1))
insert [a]
select 1,'王x','2-11',3,5,6,'a' union all
select 2,'李x','2-12',4,7,8,'a'
--> 测试数据:[b]
if object_id('[b]') is not null drop table [b]
go 
create table [b]([评分序号] int,[组号] varchar(1),[评分项目] varchar(8),[评分比例] numeric(2,1))
insert [b]
select 1,'a','完成效率',0.2 union all
select 2,'a','完成质量',0.4 union all
select 3,'a','难易度',0.4 union all
select 4,'b','x',0
--------------开始查询--------------------------
SELECT
 a.序号,a.完成人,a.日期,a.完成效率,a.完成质量,a.难易度,
 SUM(CASE WHEN b.评分项目='完成效率' THEN a.完成效率*b.评分比例 ELSE 0 END)+
 SUM(CASE WHEN b.评分项目='完成质量' THEN a.完成质量*b.评分比例 ELSE 0 END)+
 SUM(CASE WHEN b.评分项目='难易度' THEN a.难易度*b.评分比例 ELSE 0 END) AS 总分
FROM a INNER JOIN b ON a.组号=b.组号
GROUP BY 
  a.序号,a.完成人,a.日期,a.完成效率,a.完成质量,a.难易度

----------------结果----------------------------
/* 序号          完成人  日期   完成效率        完成质量        难易度         总分
----------- ---- ---- ----------- ----------- ----------- ---------------------------------------
1           王x   2-11 3           5           6           5.0
2           李x   2-12 4           7           8           6.8

(2 行受影响)
*/
AcHerat 元老 2014-03-29
  • 打赏
  • 举报
回复

select a.*,
    a.完成效率*b.评分比例+a.完成质量*c.评分比例+a.难易度*d.评分比例 as 总分
from tbA a join tbB b on a.完成效率 = b.评分序号
             join tbB c on a.完成质量 = b.评分序号
             join tbB d on a.难易度 = b.评分序号
myue 2014-03-29
  • 打赏
  • 举报
回复


 SELECT  DISTINCT  a.*,
 a.完成效率* ISNULL((SELECT top 1 评分比例 FROM b WHERE 评分项目='完成效率'  AND b.组号=a.组号),0) +
 a.完成质量* ISNULL((SELECT top 1 评分比例 FROM b WHERE 评分项目='完成质量' AND b.组号=a.组号),0)+
 a.难易度*   ISNULL((SELECT top 1 评分比例 FROM b WHERE 评分项目='难易度' AND b.组号=a.组号),0)
  FROM a  join b  ON  a.组号=b. 组号   
myue 2014-03-29
  • 打赏
  • 举报
回复
3楼的可能存在语法错误,下面的应该好些

 SELECT  DISTINCT  a.*,
 a.完成效率* (SELECT 评分比例 FROM b WHERE 评分项目='完成效率'  AND b.组号=a.组号)+
 a.完成质量* (SELECT 评分比例 FROM b WHERE 评分项目='完成质量' AND b.组号=a.组号)+
 a.难易度*   (SELECT 评分比例 FROM b WHERE 评分项目='难易度' AND b.组号=a.组号)
  FROM a  join b  ON  a.组号=b. 组号   

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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