表名:生产信息LOG
字段:生产时间,生产班别,数量 查询条件为 年度,比如输入2008年 会出现1到12个月,每个班别的生产数据,本班的小计 和以前累计(某一年 这个月的累计)
(其中班组是固定的 4个班组甲乙丙丁) 生产时间 甲班数量 乙班数量 丙班数量 丁班数量 当月小计 累计 1
2
3
4
5
6
7
8
9
10
11
12
数据库是SQL2000 开发语言VB6.0
字段:生产时间,生产班别,数量 查询条件为 年度,比如输入2008年 会出现1到12个月,每个班别的生产数据,本班的小计 和以前累计(某一年 这个月的累计)
(其中班组是固定的 4个班组甲乙丙丁) 生产时间 甲班数量 乙班数量 丙班数量 丁班数量 当月小计 累计 1
2
3
4
5
6
7
8
9
10
11
12
数据库是SQL2000 开发语言VB6.0
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)
字段:生产时间,生产班别,数量 查询条件为 年度,比如输入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,生产时间)
丙班数量=sum(case when then count(丙班数量) end 0), 丁班数量 =sum(case when then count(丁班数量) end 0)
from 生产信息LOG group by 生产时间
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)
生产时间=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,生产时间)
select 生产班别,sum(数量)from 生产信息LOG
where (这里写日期限制条件,限制在一个月中) 生产时间>某年 某月 and 生产时间<某年 某月
group by 生产班别这里得到的就是 所有班别的 某年某月的生产数量如果是要一个班别的 在where 条件 后边加上班别 就得到 某年某月 某班别的的生产数量select 生产班别,sum(数量)from 生产信息LOG
where 生产时间>某年 某月 and 生产时间<某年 某月 and 生产班别=某班别
group by 生产班别执行的时候做个循环 批处理下 得到各个月份的 某班别的的生产数量 数据 至于 小计和累计 你在程序中做 只是简单的加法 得到需要的数据后 在页面显示 就可以了
这样做的好处是 sql做最基本的调出数据的操作 页面程序也分担一部分计算 不会把算法时间 浪费在行变列 列变行中
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,生产时间)