表名:生产信息LOG 
字段:生产时间,生产班别,数量 查询条件为 年度,比如输入2008年 会出现1到12个月,每个班别的生产数据,本班的小计 和以前累计(某一年 这个月的累计)
(其中班组是固定的 4个班组甲乙丙丁) 生产时间  甲班数量  乙班数量  丙班数量  丁班数量  当月小计  累计 1      








10 
11 
12 
数据库是SQL2000  开发语言VB6.0

解决方案 »

  1.   

    select convert(varchar(7) , 生产时间 , 120) 生产时间_月,
    sum(case 生产班别 when '甲' then 数量 else 0 end) 甲班数量,
    sum(case 生产班别 when '乙' then 数量 else 0 end) 乙班数量,
    sum(case 生产班别 when '丙' then 数量 else 0 end) 丙班数量,
    sum(case 生产班别 when '丁' then 数量 else 0 end) 丁班数量,
    sum(数量) 当月小计
    from 生产信息LOG
    group by convert(varchar(7) , 生产时间 , 120) 
      

  2.   

    表名:生产信息LOG 
    字段:生产时间,生产班别,数量 查询条件为 年度,比如输入2008年 会出现1到12个月,每个班别的生产数据,本班的小计 和以前累计(某一年 这个月的累计) 
    (其中班组是固定的 4个班组甲乙丙丁) 生产时间  甲班数量  乙班数量  丙班数量  丁班数量  当月小计  累计 --select 
      生产时间=datepart(m,生产时间),
      甲班数量=sum(case when 生产班别='甲班' then 数量 end),
      乙班数量=sum(case when 生产班别='乙班' then 数量 end),
      丙班数量=sum(case when 生产班别='丙班' then 数量 end),
      丁班数量=sum(case when 生产班别='丁班' then 数量 end),
      当月小计=sum(数量),
      累计=(select sum(数量) from 生产信息LOG where datepart(m,生产时间) <= datepart(m,a.生产时间))
    from 生产信息LOG 
    where datepart(yy,生产时间) = 2008
    group by datepart(m,生产时间)
      

  3.   

    select  生产时间,甲班数量=sum(case when then count(甲班数量) end 0),乙班数量=sum(case when then count(乙班数量) end 0),
    丙班数量=sum(case when then count(丙班数量) end 0),  丁班数量 =sum(case when then count(丁班数量) end 0)
    from 生产信息LOG  group by 生产时间
      

  4.   

    select convert(varchar(7) , 生产时间 , 120) 生产时间_月,
    sum(case 生产班别 when '甲' then 数量 else 0 end) 甲班数量,
    sum(case 生产班别 when '乙' then 数量 else 0 end) 乙班数量,
    sum(case 生产班别 when '丙' then 数量 else 0 end) 丙班数量,
    sum(case 生产班别 when '丁' then 数量 else 0 end) 丁班数量,
    sum(数量) 当月小计
    from 生产信息LOG
    group by convert(varchar(7) , 生产时间 , 120) 
      

  5.   

    sorry select 
      生产时间=datepart(m,生产时间), 
      甲班数量=sum(case when 生产班别='甲班' then 数量 end), 
      乙班数量=sum(case when 生产班别='乙班' then 数量 end), 
      丙班数量=sum(case when 生产班别='丙班' then 数量 end), 
      丁班数量=sum(case when 生产班别='丁班' then 数量 end), 
      当月小计=sum(数量), 
      累计=(select sum(数量) from 生产信息LOG where datepart(m,生产时间) <= datepart(m,a.生产时间)) 
    from 生产信息LOG a
    where datepart(yy,生产时间) = 2008 
    group by datepart(m,生产时间)
      

  6.   

    像这样的问题 我觉得 还是在页面操作比较合适基础数据就是 某年  某月  某班别  生产数量 (使用group by )sql 语句  (不知道你的生产时间是怎么设置的,精确到日还是月)所以只能简单说下
    select 生产班别,sum(数量)from 生产信息LOG 
    where  (这里写日期限制条件,限制在一个月中) 生产时间>某年  某月 and 生产时间<某年  某月
    group by 生产班别这里得到的就是  所有班别的   某年某月的生产数量如果是要一个班别的 在where 条件 后边加上班别 就得到 某年某月   某班别的的生产数量select 生产班别,sum(数量)from 生产信息LOG 
    where   生产时间>某年  某月 and 生产时间<某年  某月 and 生产班别=某班别
    group by 生产班别执行的时候做个循环 批处理下  得到各个月份的  某班别的的生产数量 数据 至于  小计和累计   你在程序中做  只是简单的加法  得到需要的数据后 在页面显示 就可以了
    这样做的好处是 sql做最基本的调出数据的操作  页面程序也分担一部分计算  不会把算法时间 浪费在行变列 列变行中
      

  7.   


    select 
      生产时间=datepart(m,生产时间), 
      甲班数量=sum(case when 生产班别='甲班' then 数量 end), 
      乙班数量=sum(case when 生产班别='乙班' then 数量 end), 
      丙班数量=sum(case when 生产班别='丙班' then 数量 end), 
      丁班数量=sum(case when 生产班别='丁班' then 数量 end), 
      当月小计=sum(数量), 
      累计=(select sum(数量) from 生产信息LOG where datepart(m,生产时间) <= datepart(m,a.生产时间)) 
    from 生产信息LOG a 
    where datepart(yy,生产时间) = 2008 
    group by datepart(m,生产时间)