我用sql(select 流程名称,流程阶段,负责人,yn备注,子任务,任务负责人,任务状态,耗时,开始时间,偏差率,yns备注 from t1)查出如下数据:
表一:
ID 流程名称 流程阶段 负责人 yn备注 子任务 任务负责人 状态 耗时 开始时间 偏差率 yns备注
1 流程A 设计中 张三 yn表备注1 代码分析 人1 已完成 1 2001-1-1 0.2 yns表备注1
1 流程A 设计中 张三 yn表备注1 故障分析 人2 已完成 1 2001-1-2 0.5 yns表备注2
1 流程A 设计中 张三 yn表备注1 故障复现 人3 已完成 3 2001-1-3 0.3 yns表备注3
2 流程B 设计中 李四 yn表备注2 代码分析 人4 已完成 2 2003-1-1 0.2 yns表备注4
2 流程B 设计中 李四 yn表备注2 故障分析 人5 已完成 3 2004-1-2 0.5 yns表备注5
我需要查出以下结果:
表二:流程名称 子任务 流程阶段 负责人 备注 耗时 开始时间 偏差率 流程A 无 设计中 张三 yn表备注1 (计算1+1+3) 无 计算(0.2+0.5+0.3)/3
代码分析 已完成 人1 yns表备注1 1 2001-1-1 0.2
故障分析 已完成 人2 yns表备注2 1 2001-1-2 0.5
故障复现 已完成 人3 yns表备注3 3 2001-1-3 0.3 流程B 无 设计中 李四 yn表备注2 (计算1+1) 无 计算(0.2+0.5)/2
代码分析 已完成 人1 yns表备注4 1 2001-1-1 0.2
故障分析 已完成 人2 yns表备注5 1 2001-1-2 0.5
表一红色的列实际为主表的列。
表一蓝色的列实际为从表的列。表二中红色部分是需要计算的:
例如列: 耗时
(第一行取下面所有字段'耗时'的总和)
例如列: 偏差率
(第一行取下面所有字段'偏出率'的总和/个数)
蓝色部分需要在一列中显示两个字段的内容:例如列:流程阶段
(第一行取字段'流程阶段'、下面的取字段'任务状态')
例如列:负责人
(第一行取字段'负责人'、下面的取字段'任务负责人')
例如列:备注
(第一行取字段'yn备注'、下面的取字段'yns备注')黑色部分需要的效果:
例如列:流程名称
(第一行取字段'流程名称',下面的行空着)
例如列:子任务
(第一行空着,下面的取字段''子任务')
例如列:开始时间
(第一行空着,下面的取字段'开始时间')
不知道大家能看明白吗?哪位高手能解决,真是多谢了!!
表一:
ID 流程名称 流程阶段 负责人 yn备注 子任务 任务负责人 状态 耗时 开始时间 偏差率 yns备注
1 流程A 设计中 张三 yn表备注1 代码分析 人1 已完成 1 2001-1-1 0.2 yns表备注1
1 流程A 设计中 张三 yn表备注1 故障分析 人2 已完成 1 2001-1-2 0.5 yns表备注2
1 流程A 设计中 张三 yn表备注1 故障复现 人3 已完成 3 2001-1-3 0.3 yns表备注3
2 流程B 设计中 李四 yn表备注2 代码分析 人4 已完成 2 2003-1-1 0.2 yns表备注4
2 流程B 设计中 李四 yn表备注2 故障分析 人5 已完成 3 2004-1-2 0.5 yns表备注5
我需要查出以下结果:
表二:流程名称 子任务 流程阶段 负责人 备注 耗时 开始时间 偏差率 流程A 无 设计中 张三 yn表备注1 (计算1+1+3) 无 计算(0.2+0.5+0.3)/3
代码分析 已完成 人1 yns表备注1 1 2001-1-1 0.2
故障分析 已完成 人2 yns表备注2 1 2001-1-2 0.5
故障复现 已完成 人3 yns表备注3 3 2001-1-3 0.3 流程B 无 设计中 李四 yn表备注2 (计算1+1) 无 计算(0.2+0.5)/2
代码分析 已完成 人1 yns表备注4 1 2001-1-1 0.2
故障分析 已完成 人2 yns表备注5 1 2001-1-2 0.5
表一红色的列实际为主表的列。
表一蓝色的列实际为从表的列。表二中红色部分是需要计算的:
例如列: 耗时
(第一行取下面所有字段'耗时'的总和)
例如列: 偏差率
(第一行取下面所有字段'偏出率'的总和/个数)
蓝色部分需要在一列中显示两个字段的内容:例如列:流程阶段
(第一行取字段'流程阶段'、下面的取字段'任务状态')
例如列:负责人
(第一行取字段'负责人'、下面的取字段'任务负责人')
例如列:备注
(第一行取字段'yn备注'、下面的取字段'yns备注')黑色部分需要的效果:
例如列:流程名称
(第一行取字段'流程名称',下面的行空着)
例如列:子任务
(第一行空着,下面的取字段''子任务')
例如列:开始时间
(第一行空着,下面的取字段'开始时间')
不知道大家能看明白吗?哪位高手能解决,真是多谢了!!
INSERT @a SELECT 1 ,'流程A' ,'设计中' ,'张三' ,'yn表备注1', '代码分析' ,'人1', '已完成', 1 ,'2001-1-1', 0.2 ,'yns表备注1'
UNION ALL SELECT 1 ,'流程A' ,'设计中' ,'张三' ,'yn表备注1', '故障分析' ,'人2', '已完成', 1 ,'2001-1-2', 0.5 ,'yns表备注2'
UNION ALL SELECT 1 ,'流程A' ,'设计中' ,'张三' ,'yn表备注1', '故障复现' ,'人3', '已完成', 3 ,'2001-1-3', 0.3 ,'yns表备注3'
UNION ALL SELECT 2 ,'流程B' ,'设计中' ,'李四' ,'yn表备注2', '代码分析' ,'人4', '已完成', 2 ,'2003-1-1', 0.2 ,'yns表备注4'
UNION ALL SELECT 2 ,'流程B' ,'设计中' ,'李四' ,'yn表备注2', '故障分析' ,'人5', '已完成', 3 ,'2004-1-2', 0.5 ,'yns表备注5'SELECT id,流程名称,'' 子任务,流程阶段,负责人,yn备注, sum(耗时) 耗时, '无',sum(偏差率)/count(1) 偏差率
FROM @a
GROUP BY id,流程名称,流程阶段,负责人,yn备注UNION ALL SELECT id,'', 子任务,状态,任务负责人,yns备注,耗时,开始时间,偏差率
FROM @a
ORDER by id,3
--result
/*
id 流程名称 子任务 流程阶段 负责人 yn备注 耗时 偏差率
----------- -------------------- -------------------- -------------------- -------------------- -------------------- ----------- -------------------- ----------------------------------------
1 流程A 设计中 张三 yn表备注1 5 无 .333333
1 代码分析 已完成 人1 yns表备注1 1 2001-1-1 .200000
1 故障分析 已完成 人2 yns表备注2 1 2001-1-2 .500000
1 故障复现 已完成 人3 yns表备注3 3 2001-1-3 .300000
2 流程B 设计中 李四 yn表备注2 5 无 .350000
2 代码分析 已完成 人4 yns表备注4 2 2003-1-1 .200000
2 故障分析 已完成 人5 yns表备注5 3 2004-1-2 .500000(所影响的行数为 7 行)*/