注册 登录
编程论坛 SQL Server论坛

生产日报、周报、月报的SQL

yiyaozjk 发布于 2014-04-03 11:58, 2755 次点击
生产日报表:
   生产物品名   生产工序名称 加工人姓名  加工日期      加工时间段    加工数量   破损数  个人累计数   
       A           打粉            XM1     03-27       8:00-9:00     100        2           200  
       A           打粉            XM1     03-27       9:00-12:00    300        2           500
       B           筛选            XM2     04-27        8:00-9:00    100        2           200

想得到每天、每周、每月的每道工序的加工情况汇总表
          按人员每天、每周、每月的工作情况汇总表
要如何写SQL语句?

     
     
15 回复
#2
owenlu19812014-04-03 12:26
每天
"Select 生产物品名,生产工序名称,加工人姓名,加工日期,Sum(加工数量) as 总加工数量,Sum(破损数) as 总破损数,个人累计数 from 生产日报表 Group By 生产物品名,生产工序名称,加工日期,加工人姓名,个人累计数"
每周
"Select 生产物品名,生产工序名称,加工人姓名,周数,Sum(加工数量) as 总加工数量,Sum(破损数) as 破损数,个人累计数 from (Select 生产物品名,生产工序名称,加工人姓名,Cstr(Year(加工日期))+'WK'+Cstr(DatePart('ww',加工日期)) as 周数,加工数量,破损数,个人累计数 from 生产日报表) Group By 生产物品名,生产工序名称,周数,加工人姓名,个人累计数"
每月
"Select 生产物品名,生产工序名称,加工人姓名,月数,Sum(加工数量) as 总加工数量,Sum(破损数) as 破损数,个人累计数 from (Select 生产物品名,生产工序名称,加工人姓名,Format(加工日期,'YYYYMM') as 月数,加工数量,破损数,个人累计数 from 生产日报表) Group By 生产物品名,生产工序名称,月数,加工人姓名,个人累计数"
#3
yiyaozjk2014-04-03 12:55
版主,
Select cpbhao,ssbumen, caozhuorq,月数,Sum(dangricl) as 总加工数量,Sum(posuns) as 破损数 from (Select cpbhao,ssbumen, Format(caozhuorq,'YYYYMM') as 月数,dangric,posuns from scrb) Group By ssbumen,月数

提示:消息 195,级别 15,状态 10,第 1 行
'Format' 不是可以识别的 内置函数名称。

我改成了
Select cpbhao,ssbumen, caozhuorq,月数,Sum(dangricl) as 总加工数量,Sum(posuns) as 破损数 from (Select cpbhao,ssbumen,  month(caozhuorq) as 月数,dangric,posuns from scrb) Group By ssbumen,月数

又提示 关键字 'Group' 附近有语法错误。如何改?
#4
owenlu19812014-04-03 13:28
"Select cpbhao,ssbumen, caozhuorq,月数,Sum(dangricl) as 总加工数量,Sum(posuns) as 总破损数 from (Select cpbhao,ssbumen,Month(caozhuorq) as 月数,dangric,posuns from scrb) Group By cpbhao,ssbumen, caozhuorq,月数"
除了统计列,其它列都要出现在Group里
#5
yiyaozjk2014-04-03 13:41
Select   cpbhao,ssbumen, caozhuorq,月数,
Group By cpbhao,ssbumen, caozhuorq,月数

我没有少列吧?请指点一下,我少了???
#6
owenlu19812014-04-03 13:49
回复 5楼 yiyaozjk
我改成了
Select cpbhao,ssbumen, caozhuorq,月数,Sum(dangricl) as 总加工数量,Sum(posuns) as 破损数 from (Select cpbhao,ssbumen,  month(caozhuorq) as 月数,dangric,posuns from scrb) Group By ssbumen,月数
---
Group By ssbumen,月数 (你修改的时候只有两列).......

[ 本帖最后由 owenlu1981 于 2014-4-3 14:00 编辑 ]
#7
yiyaozjk2014-04-03 14:09
还是报错 关键字 'Group' 附近有语法错误
我将你给那句拆成了下面2句话,结果还都能成功查询,不报错。。。。
Select cpbhao,ssbumen, caozhuorq, Sum(dangricl) as 总加工数量,Sum(posuns) as 总破损数 from scrb Group By cpbhao,ssbumen, caozhuorq
Select cpbhao,ssbumen,Month(caozhuorq) as 月数,dangricl,posuns from scrb
我SQL语法基础差,能指教一下吗?  我是SQL2005+WIN7环境
#8
owenlu19812014-04-03 14:10
把目前的代码贴上来看看
#9
yiyaozjk2014-04-03 14:23
目前就是用了你这句。。。。
Select ssbumen, caozhuorq, Sum(dangricl) as 总加工数量,Sum(posuns) as 总破损数 from (Select cpbhao,ssbumen,Month(caozhuorq) as 月数,dangricl,posuns from scrb) Group By ssbumen, caozhuorq
 我直接在SQL中执行报错的。。。
#10
owenlu19812014-04-03 14:28
以下是引用yiyaozjk在2014-4-3 14:23:03的发言:

目前就是用了你这句。。。。
Select ssbumen, caozhuorq, Sum(dangricl) as 总加工数量,Sum(posuns) as 总破损数 from (Select cpbhao,ssbumen,Month(caozhuorq) as 月数,dangricl,posuns from scrb) Group By ssbumen, caozhuorq
 我直接在SQL中执行报错的。。。



第一层查询后 caozhuorq 转成"月数"了,改成
Select ssbumen, 月数, Sum(dangricl) as 总加工数量,Sum(posuns) as 总破损数 from (Select cpbhao,ssbumen,Month(caozhuorq) as 月数,dangricl,posuns from scrb) Group By ssbumen, 月数
#11
yiyaozjk2014-04-03 14:33
只有本站会员才能查看附件,请 登录

数据库名:sxcpmc 干脆将测试用的数据库上传了
#12
owenlu19812014-04-03 14:42
我没装SQL...
#13
yiyaozjk2014-04-03 15:02
经过别人指点,
少了一个别名

Select t.ssbumen, t.月数, Sum(dangricl) as 总加工数量,Sum(posuns) as 总破损数 from (Select cpbhao,ssbumen,Month(caozhuorq) as 月数,dangricl,posuns from scrb) as t Group By ssbumen, 月数 就正确
#14
owenlu19812014-04-03 15:40
以下是引用yiyaozjk在2014-4-3 15:02:45的发言:

经过别人指点,
少了一个别名

Select t.ssbumen, t.月数, Sum(dangricl) as 总加工数量,Sum(posuns) as 总破损数 from (Select cpbhao,ssbumen,Month(caozhuorq) as 月数,dangricl,posuns from scrb) as t Group By ssbumen, 月数 就正确


不需要的,应该不是t的问题;
如果是的话,为什么Sum(dangricl),Sum(posuns),Group By ssbumen里不加?
#15
yiyaozjk2014-04-03 15:47
但是确实加了就通过了

Select cpbhao,t.ssbumen,ygsn,周数,Sum(dangricl) as 总加工数量,Sum(posuns) as 破损数  from (Select cpbhao,t.ssbumen,ygsn,Cstr(Year(caozhuorq))+'WK'+Cstr(DatePart('ww',caozhuorq)) as 周数,dangricl,posuns  from scrb) as t  Group By cpbhao,ssbumen,周数,ygsn

消息 195,级别 15,状态 10,第 3 行
'Cstr' 不是可以识别的 内置函数名称。  这个周问题如何解决?最好是能得到2014年第8周 这样的结果,帮忙解决一下
#16
owenlu19812014-04-03 16:00
我是在ACCESS上实现的,如果不加Cstr会提示类型不匹配,你去掉cstr试试
Cstr(Year(caozhuorq))+'WK'+Cstr(DatePart('ww',caozhuorq))
=> Year(caozhuorq) + '年第' + DatePart('Wk',caozhuorq) + '周'

如果不行,就转换成文本相连
=> Cast(Year(caozhuorq) as varchar) + '年第' + Cast(DatePart('Wk',caozhuorq) as varchar) + '周'

相关日期函数和参数如附件
只有本站会员才能查看附件,请 登录


[ 本帖最后由 owenlu1981 于 2014-4-3 16:22 编辑 ]
1