none
对菜鸟我来说..好难哦!!关于SQL分组求和的SQL语句 RRS feed

  • 问题

  • 题目是:

    表1

    登记时间  姓 名   任务数量    完成数量     合格品      次   品        单 价     金额   

    08-9       李三        200                80                80              20               60           4800

    08-9       李三        200                80                70              10               60           4200

    08-9       李三        200                80                60              20               60           3600

    08-9       王五        300                100              70              10               60           4200

    08-9       王五        300                100              90              10               60           5400

    08-9       王五        300                100              90              10               60           5400

     

    写出SQL语句得出以下的结果:                                (合格-任务)                     (1+2)

    时间  姓名   任务  完成  合格品  次品  不良率  金 额1   差额量  差额价  金额2   总金额 

    08-9   李三  200    240     210         50     20.8%     12600        10         20          200     12800

    08-9   王五  300    300     250         50     16.6%     15000        -50        20            0       15000

     

     

     

    我晕...难死我哒....请大家帮忙..版主feiyun0112也帮我看哈.     这道题SQL语句该怎么写?????谢谢大家了

    2008年10月18日 16:49

答案

  • Code Snippet

    select 登记时间, 姓名, 任务数量

    ,sum(完成数量) as 完成数量

    ,sum(合格品) as 合格品

    ,sum( 次品) as  次品

    ,sum( 次品)*100/sum(完成数量)  as  不良率

    ,sum( 金额) as  金额1

    ,sum(完成数量)- 任务数量 as 差额量

    ,  差额价 不知道怎么算

    ,  差额价 *  case when (sum(完成数量)- 任务数量)>0 then  (sum(完成数量)- 任务数量) esle 0 end  as 金额2

    ,sum( 金额)+( 差额价 *  case when (sum(完成数量)- 任务数量)>0 then  (sum(完成数量)- 任务数量) esle 0 end)     as  总金额

     

    from tablename

    group by 登记时间, 姓名, 任务数量

     

     

     

     

    2008年10月20日 1:28
    版主

全部回复

  • Code Snippet

    select 登记时间, 姓名, 任务数量

    ,sum(完成数量) as 完成数量

    ,sum(合格品) as 合格品

    ,sum( 次品) as  次品

    ,sum( 次品)*100/sum(完成数量)  as  不良率

    ,sum( 金额) as  金额1

    ,sum(完成数量)- 任务数量 as 差额量

    ,  差额价 不知道怎么算

    ,  差额价 *  case when (sum(完成数量)- 任务数量)>0 then  (sum(完成数量)- 任务数量) esle 0 end  as 金额2

    ,sum( 金额)+( 差额价 *  case when (sum(完成数量)- 任务数量)>0 then  (sum(完成数量)- 任务数量) esle 0 end)     as  总金额

     

    from tablename

    group by 登记时间, 姓名, 任务数量

     

     

     

     

    2008年10月20日 1:28
    版主
  • feiyun0112版主,这段代码有语法错误:

     差额价 *  case when (sum(完成数量)- 任务数量)>0 then  (sum(完成数量)- 任务数量) esle 0 end  as 金额2

    错误提示:

    服务器: 消息 170,级别 15,状态 1,行 3
    第 3 行: 'esle' 附近有语法错误。

     

    我自己改的代码是:

     

    select 登记时间, 姓名, 任务数量

    ,sum(完成数量) as 完成数量

    ,sum(合格品) as 合格品

    ,sum( 次品) as  次品

    ,sum( 次品)*100/sum(完成数量)  as  不良率

    ,sum( 金额) as  金额1

    ,sum(完成数量)- 任务数量 as 差额量

    ,  差额价 * (sum(完成数量)- 任务数量as 金额2

    ,sum( 金额)+ 金额2 as  总金额

    from 表

    group by 登记时间, 姓名, 任务数量,差额价

     

     

    这样写的话...金额2为负数..没有达到要求,还是要和您一样加个判断,但上面语句有语feiyun0112版主帮我改一下..谢谢

    2008年10月20日 7:22
  • esle =else

     

     

    笔误

     

    其实语法部分你可以看sql server 的帮助

    2008年10月20日 7:29
    版主
  • 原来如此

    谢谢feiyun0112,搞好了
    2008年10月20日 9:37