我用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备注')黑色部分需要的效果:
例如列:流程名称
(第一行取字段'流程名称',下面的行空着)
例如列:子任务
(第一行空着,下面的取字段''子任务') 
例如列:开始时间
(第一行空着,下面的取字段'开始时间') 
 不知道大家能看明白吗?哪位高手能解决,真是多谢了!!

解决方案 »

  1.   

    DECLARE @a TABLE(ID INT, 流程名称 VARCHAR(20), 流程阶段 VARCHAR(20),   负责人 VARCHAR(20),   yn备注 VARCHAR(20),子任务 VARCHAR(20),任务负责人  VARCHAR(20), 状态   VARCHAR(20),  耗时   int,    开始时间 varchar(20),     偏差率 decimal(10,1),  yns备注  VARCHAR(20))
    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 行)*/