数据库内数据统计问题

lpc13579 2019-02-12 04:04:26
目前我已经用如下语句分别得到不同表单,请问如何能合并成一个总的表?
1、工作日加班
程序代码:
 Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path & "\考勤.mdb;Persist Security Info=False"
Adodc2.RecordSource = "SELECT 序号,姓名,SUM(加班小计) as 工作日加班 FROM 考勤 WHERE (right(星期,1)<>'六' and right(星期,1)<>'日') GROUP BY 序号,姓名"
Adodc2.Refresh
Set DataGrid2.DataSource = Adodc2





2、双休日加班
 Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path & "\考勤.mdb;Persist Security Info=False"
Adodc2.RecordSource = "SELECT 序号,姓名,SUM(加班小计) as 双休加班 FROM 考勤 WHERE right(星期,1)='六' or right(星期,1)='日' GROUP BY 序号,姓名"
Adodc2.Refresh
Set DataGrid2.DataSource = Adodc2




3、统计表
  Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path & "\考勤.mdb;Persist Security Info=False"
Adodc2.RecordSource = "SELECT 序号,姓名,SUM(加班小计) as 加班小计,SUM(休假) as 休假,SUM(早班时间) as 早班时间,SUM(中班时间) as 中班时间,SUM(夜班时间) as 夜班时间 FROM 考勤 GROUP BY 序号,姓名"
Adodc2.Refresh
Set DataGrid2.DataSource = Adodc2






现在,想把这几张表合成一张表,如下图所示(不好意思,是画图拼接出来的)



请问,用什么语句,怎样写法,才能合并出上面这张表呢?

或者说,如何将以上的语句合并写,直接生成上面这张表呢?

恳求版主和路过的坛友在百忙中抽出点时间帮帮我,谢谢!
...全文
75 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
VB业余爱好者 2019-02-13
  • 打赏
  • 举报
回复
SELECT C.序号, C.姓名, 加班合计, 休假合计, 早班合计, 中班合计, 夜班合计, 工作日加班, 双休加班
FROM(
SELECT A.序号, A.姓名, 加班合计, 休假合计, 早班合计, 中班合计, 夜班合计, 工作日加班
FROM (SELECT 序号, 姓名, SUM(加班小计) AS 加班合计, SUM(休假) AS 休假合计, SUM(早班时间) AS 早班合计, SUM(中班时间) AS 中班合计, SUM(夜班时间) AS 夜班合计 FROM 考勤 GROUP BY 序号, 姓名) AS A LEFT JOIN (SELECT 序号, 姓名, SUM(加班小计) AS 工作日加班 FROM 考勤 WHERE (right(星期,1)<>'六' and right(星期,1)<>'日') GROUP BY 序号, 姓名) AS B ON (A.序号=B.序号) AND (A.姓名=B.姓名)
) AS C
LEFT JOIN (SELECT 序号, 姓名, SUM(加班小计) AS 双休加班 FROM 考勤 WHERE right(星期,1)='六' or right(星期,1)='日'GROUP BY 序号, 姓名) AS D ON (C.序号=D.序号) AND (C.姓名=D.姓名)


我已经执行过了,不报错
VB业余爱好者 2019-02-13
  • 打赏
  • 举报
回复
只有SQL语句,不知道符合不符合你的要求。还有个疑问,你的那个序号是干什么的?类似于工号?

SELECT C.序号, C.姓名, 加班合计, 休假合计, 早班合计, 中班合计, 夜班合计, 工作日加班, 双休加班
FROM(
SELECT A.序号, A.姓名, 加班合计, 休假合计, 早班合计, 中班合计, 夜班合计, 工作日加班
FROM (SELECT 序号, 姓名, SUM(加班小计) AS 加班合计, SUM(休假) AS 休假合计, SUM(早班时间) AS 早班合计, SUM(中班时间) AS 中班合计, SUM(夜班时间) AS 夜班合计 FROM 考勤 GROUP BY 序号, 姓名) AS A LEFT JOIN (SELECT 序号, 姓名, SUM(加班小计) AS 工作日加班 FROM 考勤 WHERE (right(星期,1)<>'六' and right(星期,1)<>'日') GROUP BY 序号, 姓名) AS B ON (A.序号=B.序号) AND (A.姓名=B.姓名)
) AS C
LEFT JOIN (SELECT 序号, 姓名, SUM(加班小计) AS 双休加班 FROM 考勤 WHERE right(星期,1)='六' or right(星期,1)='日'GROUP BY 序号, 姓名) AS D ON (C.序号=D.序号) AND (C.姓名=D.姓名)
ZHRXJR 2019-02-13
  • 打赏
  • 举报
回复
你的三个表使用的是同一个数据表,而且工作日加班、双休日加班的条件语句有冲突,因此想使用原来的数据表生成一个表恐怕不可能。
既然能够生成 工作日加班、双休日加班 及 统计表,将生成的这三个表合并成一个数据表,就解决问题了。
lpc13579 2019-02-13
  • 打赏
  • 举报
回复
恳求版主和路过的坛友在百忙中抽出点时间帮帮我,谢谢!

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧