字段:班组 数量 时间 甲班 10 2008-09-01
乙班 3 2008-10-01
...
是这样的结构,
其中要说明的是 我的查询条件是按年和月查询,比如我要查询的是2008年9月 我要查询出的结果是:
日期 甲班数量 乙班数量 丙班数量 丁班数量 当日小计 累计 2008-09-01
2008-09-02
2008-09-03
......一共是4个班,日期是 一天一天的,如这天没数据就为0, 当日小计 就是把 4个班当天的相加,累计就是把 今天的数据加上这个月以
前的所有数据,跪求这样的SQL
乙班 3 2008-10-01
...
是这样的结构,
其中要说明的是 我的查询条件是按年和月查询,比如我要查询的是2008年9月 我要查询出的结果是:
日期 甲班数量 乙班数量 丙班数量 丁班数量 当日小计 累计 2008-09-01
2008-09-02
2008-09-03
......一共是4个班,日期是 一天一天的,如这天没数据就为0, 当日小计 就是把 4个班当天的相加,累计就是把 今天的数据加上这个月以
前的所有数据,跪求这样的SQL
,(case 班组 when '甲班' then sum(数量) else 0 end) as 甲班数量
,(case 班组 when '甲班' then sum(数量) else 0 end) as 乙班数量
,(case 班组 when '甲班' then sum(数量) else 0 end) as 丙班数量
,(case 班组 when '甲班' then sum(数量) else 0 end) as 丁班数量
, sum(数量) as 当日小计
,(select sum(数量) from mytable where 日期 between (substr(a.日期,1,7) || '-01') and a.日期) as 累计
from mytable a
where substr(日期,1,7)= '2008-09'
,(case 班组 when '甲班' then sum(数量) else 0 end) as 甲班数量
,(case 班组 when '乙班' then sum(数量) else 0 end) as 乙班数量
,(case 班组 when '丙班' then sum(数量) else 0 end) as 丙班数量
,(case 班组 when '丁班' then sum(数量) else 0 end) as 丁班数量
, sum(数量) as 当日小计
,(select sum(数量) from mytable where 日期 between (substr(a.日期,1,7) || '-01') and a.日期) as 累计
from mytable a
where substr(日期,1,7)= '2008-09'
group by 日期
,(case 班组 when '甲班' then sum(数量) else 0 end) as 甲班数量
,(case 班组 when '乙班' then sum(数量) else 0 end) as 乙班数量
,(case 班组 when '丙班' then sum(数量) else 0 end) as 丙班数量
,(case 班组 when '丁班' then sum(数量) else 0 end) as 丁班数量
, sum(数量) as 当日小计
,(select sum(数量) from mytable where 日期 between (substring(a.日期,1,7) & '-01') and a.日期) as 累计
from mytable a
where substring(日期,1,7)= '2008-09'
group by 日期
,SUM(甲班数量) AS 甲班数量
,SUM(乙班数量) AS 乙班数量
,SUM(丙班数量) AS 丙班数量
,SUM(丁班数量) AS 丁班数量
,SUM(当日小计) AS 当日小计
,SUM(累计) AS 累计
FROM (
SELECT 时间
,(CASE 班别 WHEN '甲班' THEN SUM(数量) ELSE 0 END) AS 甲班数量
,(CASE 班别 WHEN '乙班' THEN SUM(数量) ELSE 0 END) AS 乙班数量
,(CASE 班别 WHEN '丙班' THEN SUM(数量) ELSE 0 END) AS 丙班数量
,(CASE 班别 WHEN '丁班' THEN SUM(数量) ELSE 0 END) AS 丁班数量
, SUM(数量) AS 当日小计
,(SELECT SUM(数量) From 库存表 WHERE 时间 BETWEEN '2008-10-01' AND a.时间) AS 累计
FROM 库存表 a
WHERE LEFT(时间, 7) = '2008-10'
and 是否显示='1'
Group By 班别,时间
)
GROUP BY 时间