表名:table
字段:生产日期,班组,生产数量查询条件为 年度,比如输入2008年 会出现1到12个月,每个班组的生产数据,本班组的小计 和以前累计(其中班组是固定的 4个班组甲乙丙丁)日期 甲班数量 乙班数量 丙班数量 丁班数量 当月小计 累计1
2
3
4
5
6
7
8
9
10
11
12补充一点是SQL2000数据库~~~~
字段:生产日期,班组,生产数量查询条件为 年度,比如输入2008年 会出现1到12个月,每个班组的生产数据,本班组的小计 和以前累计(其中班组是固定的 4个班组甲乙丙丁)日期 甲班数量 乙班数量 丙班数量 丁班数量 当月小计 累计1
2
3
4
5
6
7
8
9
10
11
12补充一点是SQL2000数据库~~~~
解决方案 »
- vb 用 WebBrowser 取到网页内容的部分
- 打包msde修改step.ini
- 还是全局鼠标钩子的问题
- Winodow.MediaPlay怎样设置全屏和大小?
- richtextbox的内容水平居中对齐问题,100分相送!
- 如何使控件和窗体大小一样??
- 有哪位高手知道VB组件开发是怎么一回事,和AxtiveX控件有什么样的关系,怎么开发?
- 请问:如何获取当前行的所有列?我这么写怎么不对?
- 关于 虚拟打印机 资料 方案 感觉特无助
- activeX active Dll 和 Active X control 有什么区别..
- 怎么让ListBox的内容自动向上滚动,保持最后一行在中间显示
- 超级SQL 问题 谁会谁是高手!
每个班组的生产数据
set @year=2008select month(生产日期),
sum(case 班组 when '甲' then 1 end) end as 甲班数量,
sum(case 班组 when '乙' then 1 end) end as 乙班数量,
sum(case 班组 when '丙' then 1 end) end as 丙班数量,
sum(case 班组 when '丁' then 1 end) end as 丁班数量
from Table where year(生产日期)=@year
group by month(生产日期)
order by month(生产日期)
不知道我的理解是否正确。
我没有安装SQL Server 所以用Access写了一个,可以参考一下。(没有做当月累计,这个比较简单,累加就可以了。)SELECT distinct FORMAT(TableA.生产日期,'YYYY-MM') AS 日期 , 甲.甲班数量,乙.乙班数量,丙.丙班数量,丁.丁班数量
FROM ((((TableA
LEFT JOIN ( SELECT FORMAT(TableA.生产日期,'YYYY-MM') AS 甲生产日期 ,
SUM(生产数量) AS 甲班数量
FROM TableA
WHERE 班组 ='甲'
GROUP BY FORMAT(TableA.生产日期,'YYYY-MM')
) AS 甲
ON FORMAT(TableA.生产日期,'YYYY-MM') = 甲.甲生产日期)
LEFT JOIN ( SELECT FORMAT(TableA.生产日期,'YYYY-MM') AS 乙生产日期 ,
SUM(生产数量) AS 乙班数量
FROM TableA
WHERE 班组 ='乙'
GROUP BY FORMAT(TableA.生产日期,'YYYY-MM')
) AS 乙
ON FORMAT(TableA.生产日期,'YYYY-MM') = 乙.乙生产日期)
LEFT JOIN ( SELECT FORMAT(TableA.生产日期,'YYYY-MM') AS 丙生产日期 ,
SUM(生产数量) AS 丙班数量
FROM TableA
WHERE 班组 ='丙'
GROUP BY FORMAT(TableA.生产日期,'YYYY-MM')
) AS 丙
ON FORMAT(TableA.生产日期,'YYYY-MM') = 丙.丙生产日期)
LEFT JOIN ( SELECT FORMAT(TableA.生产日期,'YYYY-MM') AS 丁生产日期 ,
SUM(生产数量) AS 丁班数量
FROM TableA
WHERE 班组 ='丁'
GROUP BY FORMAT(TableA.生产日期,'YYYY-MM')
) AS 丁
ON FORMAT(TableA.生产日期,'YYYY-MM') = 丁.丁生产日期)
SELECT distinct FORMAT(TableA.生产日期,'YYYY-MM') AS 日期 , 甲.甲班数量,乙.乙班数量,丙.丙班数量,丁.丁班数量
FROM ((((TableA
LEFT JOIN ( SELECT FORMAT(TableA.生产日期,'YYYY-MM') AS 甲生产日期 ,
SUM(生产数量) AS 甲班数量
FROM TableA
WHERE 班组 ='甲'AND FORMAT(TableA.生产日期,'YYYY') ='2008'
GROUP BY FORMAT(TableA.生产日期,'YYYY-MM')
) AS 甲
ON FORMAT(TableA.生产日期,'YYYY-MM') = 甲.甲生产日期)
LEFT JOIN ( SELECT FORMAT(TableA.生产日期,'YYYY-MM') AS 乙生产日期 ,
SUM(生产数量) AS 乙班数量
FROM TableA
WHERE 班组 ='乙'AND FORMAT(TableA.生产日期,'YYYY') ='2008'
GROUP BY FORMAT(TableA.生产日期,'YYYY-MM')
) AS 乙
ON FORMAT(TableA.生产日期,'YYYY-MM') = 乙.乙生产日期)
LEFT JOIN ( SELECT FORMAT(TableA.生产日期,'YYYY-MM') AS 丙生产日期 ,
SUM(生产数量) AS 丙班数量
FROM TableA
WHERE 班组 ='丙'AND FORMAT(TableA.生产日期,'YYYY') ='2008'
GROUP BY FORMAT(TableA.生产日期,'YYYY-MM')
) AS 丙
ON FORMAT(TableA.生产日期,'YYYY-MM') = 丙.丙生产日期)
LEFT JOIN ( SELECT FORMAT(TableA.生产日期,'YYYY-MM') AS 丁生产日期 ,
SUM(生产数量) AS 丁班数量
FROM TableA
WHERE 班组 ='丁'AND FORMAT(TableA.生产日期,'YYYY') ='2008'
GROUP BY FORMAT(TableA.生产日期,'YYYY-MM')
) AS 丁
ON FORMAT(TableA.生产日期,'YYYY-MM') = 丁.丁生产日期)
WHERE FORMAT(TableA.生产日期,'YYYY') ='2008'
FROM table,
(select 生成数量 from table where 班组='甲班' WHERE MONTH(生产日期) = 1) 甲1,
(select 生成数量 from table where 班组='乙班' WHERE MONTH(生产日期) = 1) 乙1,
(select 生成数量 from table where 班组='丙班' WHERE MONTH(生产日期) = 1) 丙1,
(select 生成数量 from table where 班组='丁班' WHERE MONTH(生产日期) = 1) 丁1,
(select count(生成数量) as 当月小计 from table WHERE MONTH(生产日期) = 1) DY1,
(select count(生成数量) as 累计 from table WHERE MONTH(生产日期) = 1) LJ1,
UNION ALL
SELECT 2 AS 日期,甲2.生成数量 as 甲班数量,乙2.生成数量 as 乙班数量,丙2.生成数量 as 丙班数量,丁2.生成数量 as 丁班数量,DY2.当月小计,LJ2.累计
FROM table,
(select 生成数量 from table where 班组='甲班' WHERE MONTH(生产日期) = 2) 甲2,
(select 生成数量 from table where 班组='乙班' WHERE MONTH(生产日期) = 2) 乙2,
(select 生成数量 from table where 班组='丙班' WHERE MONTH(生产日期) = 2) 丙2,
(select 生成数量 from table where 班组='丁班' WHERE MONTH(生产日期) = 2) 丁2,
(select count(生成数量) as 当月小计 from table WHERE MONTH(生产日期) = 2) DY2,
(select count(生成数量) as 累计 from table WHERE (MONTH(生产日期) = 1 or MONTH(生产日期) = 2)) LJ2,
union all
……
FROM table,
(select sum(生成数量) from table where 班组='甲班' WHERE MONTH(生产日期) = 1) 甲1,
(select sum(生成数量) from table where 班组='乙班' WHERE MONTH(生产日期) = 1) 乙1,
(select sum(生成数量) from table where 班组='丙班' WHERE MONTH(生产日期) = 1) 丙1,
(select sum(生成数量) from table where 班组='丁班' WHERE MONTH(生产日期) = 1) 丁1,
(select sum(生成数量) as 当月小计 from table WHERE MONTH(生产日期) = 1) DY1,
(select sum(生成数量) as 累计 from table WHERE MONTH(生产日期) = 1) LJ1,
UNION ALL
SELECT 2 AS 日期,甲2.生成数量 as 甲班数量,乙2.生成数量 as 乙班数量,丙2.生成数量 as 丙班数量,丁2.生成数量 as 丁班数量,DY2.当月小计,LJ2.累计
FROM table,
(select sum(生成数量) from table where 班组='甲班' WHERE MONTH(生产日期) = 2) 甲2,
(select sum(生成数量) from table where 班组='乙班' WHERE MONTH(生产日期) = 2) 乙2,
(select sum(生成数量) from table where 班组='丙班' WHERE MONTH(生产日期) = 2) 丙2,
(select sum(生成数量) from table where 班组='丁班' WHERE MONTH(生产日期) = 2) 丁2,
(select sum(生成数量) as 当月小计 from table WHERE MONTH(生产日期) = 2) DY2,
(select sum(生成数量) as 累计 from table WHERE (MONTH(生产日期) = 1 or MONTH(生产日期) = 2)) LJ2,
union all
……
((SELECT SUM(数量)
FROM 生产信息LOG
WHERE 生产班别 = '甲班' AND year(生产时间) = '2008' AND month(生产时间)
= month(t1.生产时间)), 0) AS 甲班数量, ISNULL
((SELECT SUM(数量)
FROM 生产信息LOG
WHERE 生产班别 = '乙班' AND year(生产时间) = '2008' AND month(生产时间)
= month(t1.生产时间)), 0) AS 乙班数量, ISNULL
((SELECT SUM(数量)
FROM 生产信息LOG
WHERE 生产班别 = '丙班' AND year(生产时间) = '2008' AND month(生产时间)
= month(t1.生产时间)), 0) AS 丙班数量, ISNULL
((SELECT SUM(数量)
FROM 生产信息LOG
WHERE 生产班别 = '丁班' AND year(生产时间) = '2008' AND month(生产时间)
= month(t1.生产时间)), 0) AS 丁班数量,
(SELECT SUM(数量)
FROM 生产信息LOG
WHERE year(生产时间) = '2008' AND month(生产时间) = month(t1.生产时间))
AS 当月小计,
(SELECT SUM(数量)
FROM 生产信息LOG
WHERE year(生产时间) = '2008' AND month(生产时间) <= month(t1.生产时间))
AS 累计
FROM 生产信息log t1
GROUP BY MONTH(生产时间) 这样执行 为什么会提示 SQL 内部错误????????
字段:生产日期,班组,生产数量 查询条件为 年度,比如输入2008年 会出现1到12个月,每个班组的生产数据,本班组的小计 和以前累计(其中班组是固定的 4个班组甲乙丙丁) 日期 甲班数量 乙班数量 丙班数量 丁班数量 当月小计 累计 select (year(生产日期) & month(生产日期)) as 日期
, sum(case 班组 when '甲' then 生产数量 else 0 end) as 甲班数量
, sum(case 班组 when '乙' then 生产数量 else 0 end) as 乙班数量
, sum(case 班组 when '丙' then 生产数量 else 0 end) as 丙班数量
, sum(case 班组 when '丁' then 生产数量 else 0 end) as 丁班数量
, sum(生产数量) as 当月小计
, (select sum() from table where year(生产日期)=year(a.生产日期) and month(生产日期) between '01' and month(a.生产日期) ) as 累计
from table as a
group by (year(生产日期) & month(生产日期))
, sum(case 班组 when '甲' then 生产数量 else 0 end) as 甲班数量
, sum(case 班组 when '乙' then 生产数量 else 0 end) as 乙班数量
, sum(case 班组 when '丙' then 生产数量 else 0 end) as 丙班数量
, sum(case 班组 when '丁' then 生产数量 else 0 end) as 丁班数量
, sum(生产数量) as 当月小计
, (select sum() from table where year(生产日期)=year(a.生产日期) and month(生产日期) between '01' and month(a.生产日期) ) as 累计
from table as a
group by (year(生产日期) & month(生产日期))
, sum(case 班组 when '甲' then 生产数量 else 0 end) as 甲班数量
, sum(case 班组 when '乙' then 生产数量 else 0 end) as 乙班数量
, sum(case 班组 when '丙' then 生产数量 else 0 end) as 丙班数量
, sum(case 班组 when '丁' then 生产数量 else 0 end) as 丁班数量
, sum(生产数量) as 当月小计
, (select sum(生产数量) from table where year(生产日期)=year(a.生产日期) and month(生产日期) between '01' and month(a.生产日期) ) as 累计
from table as a
group by (year(生产日期) & month(生产日期))