一个数据表及示例数据如下:
零件代码 加工数量 单件重量 单件级数 加工工序 加工组别 批量系数 机组代码
001 100 5 开料 开料1组 0.5 0102001
002 200 3 2 折弯 折弯1组 1 0102005
006 100 1 2 折弯 折弯2组 0.5 0102006
009 30 8 3 折弯 折弯2组 0.5 0102006
005 10 2 通快 通快2组 2 0102001
009 30 2 通快 通快1组 2 0102001
......
......
……
现在的查询是需以机组代码来分组查询。
按机组代码和加工组别分组(即以机组为单位,统计各组别的完成的工作量[即加工数量、单件重量、单件级数])。统计加工数量 = 加工数量乘以批量系数。希望得到的查询结果结构为:
机组代码 折弯1组加工数量 折弯2组加工数量 通快1组加工数量 通快2组加工数量 开料1组加工数量 开料2组加工数量 折弯1组加工级数 折弯2组加工级数……
即将一纵向分布的数据,转换成横向分布来显示,这里不知道怎么处理,希望高手赐教,谢谢
分不够再另外开贴加分:)
零件代码 加工数量 单件重量 单件级数 加工工序 加工组别 批量系数 机组代码
001 100 5 开料 开料1组 0.5 0102001
002 200 3 2 折弯 折弯1组 1 0102005
006 100 1 2 折弯 折弯2组 0.5 0102006
009 30 8 3 折弯 折弯2组 0.5 0102006
005 10 2 通快 通快2组 2 0102001
009 30 2 通快 通快1组 2 0102001
......
......
……
现在的查询是需以机组代码来分组查询。
按机组代码和加工组别分组(即以机组为单位,统计各组别的完成的工作量[即加工数量、单件重量、单件级数])。统计加工数量 = 加工数量乘以批量系数。希望得到的查询结果结构为:
机组代码 折弯1组加工数量 折弯2组加工数量 通快1组加工数量 通快2组加工数量 开料1组加工数量 开料2组加工数量 折弯1组加工级数 折弯2组加工级数……
即将一纵向分布的数据,转换成横向分布来显示,这里不知道怎么处理,希望高手赐教,谢谢
分不够再另外开贴加分:)
******************************
在研究不知道用 Join 能否能实现
from
(select 机组代码,sum(加工数量*批量系数) 折弯1组加工数量 from 数据表 where 加工组别='折弯1组' group by 机组代码) a,
(select 机组代码,sum(加工数量*批量系数) 折弯2组加工数量 from 数据表 where 加工组别='折弯2组' group by 机组代码) b,
(select 机组代码,sum(加工数量*批量系数) 通快1组加工数量 from 数据表 where 加工组别='通快1组' group by 机组代码) c,
......
where a.机组代码=b.机组代码 and b.机组代码=c.机组代码 and ......
分步做了些测试,先将对表进行GROUP By 机组编码进行分类汇总,得出的集合结构放到一个“查询内容”表中。“临时条码表”即为上面的原始数据表。
之后用下面的语句
SELECT a.机组编码, b.折弯一组加工数量
FROM (SELECT 机组编码
FROM 查询内容) a LEFT OUTER JOIN
(SELECT 机组编码, SUM(加工数量 * 批量系数) 折弯一组加工数量
FROM 临时条码表
WHERE 加工组别 = '折弯一组'
GROUP BY 机组编码) b ON a.机组编码 = b.机组编码
得出的结果为:
机组代码 折弯1组加工数量
0102005 2
0102006 NULL
0102001 NULL
但再用下面的语句,来统计“折弯2组加工数量”时,提示出错:机组编码附近有语法错误。
SELECT a.机组编码, b.折弯一组加工数量
FROM (SELECT 机组编码
FROM 查询内容) a LEFT OUTER JOIN
(SELECT 机组编码, SUM(加工数量 * 批量系数) 折弯一组加工数量
FROM 临时条码表
WHERE 加工组别 = '折弯一组'
GROUP BY 机组编码) b LEFT OUTER JOIN
(SELECT 机组编码, SUM(加工数量 * 批量系数) 折弯二组加工数量
FROM 临时条码表
WHERE 加工组别 = '折弯二组'
GROUP BY 机组编码) C
ON a.机组编码 = b.机组编码 And a.机组编码=c.机组编码请高手分析下是什么原因呢?
FROM (SELECT 机组编码
FROM 查询内容) a LEFT OUTER JOIN
(SELECT 机组编码, SUM(加工数量 * 批量系数) 折弯一组加工数量
FROM 临时条码表
WHERE 加工组别 = '折弯一组'
GROUP BY 机组编码) b
ON a.机组编码 = b.机组编码
LEFT OUTER JOIN
(SELECT 机组编码, SUM(加工数量 * 批量系数) 折弯二组加工数量
FROM 临时条码表
WHERE 加工组别 = '折弯二组'
GROUP BY 机组编码) c
ON a.机组编码=c.机组编码