使用 Access 查询设计器轻松构造复杂 SQL 语句

article/2024/12/23 4:14:28

Office 家族中,平时使用 MS Acess 的人非常少,如果从工作效率的角度来说,掌握了 Access,很多时候岂止是事半功倍啊!下面就介绍一种基于 Access 查询轻松构造 SQL 语句的方法。因为本文面向把 MS Office 作为办公工具的用户,熟练编写 SQL 语句的请忽略。

假设我们有如下的员工工时记录表:

目标是按固定月份 (1~12 月)的格式统计员工的工时,格式如下:

创建查询的方法如下:

在【创建】选项卡中,点击 “查询设计” 按钮,新建一个查询,添加 WorkingHours 表:

因为需要按月统计,需要提取日期的月份,并且每个月作为单独的一列,使用表达式生成器来设置元月数据列为:

Access 不支持 case when,所以使用 IIF 函数,IIF函数比 case when 更加简洁。用同样的方法,为每个月份分别设置一列,此时的查询设计界面如下:

切换到 SQL 视图,对应的 SQL 语句如下:

SELECTWorkingHours.EmployeeID,IIf(Month([WorkDate]) = 1, [WorkHours], 0) AS Jan,IIf(Month([WorkDate]) = 2, [WorkHours], 0) AS Feb,IIf(Month([WorkDate]) = 3, [WorkHours], 0) AS Mar,IIf(Month([WorkDate]) = 4, [WorkHours], 0) AS Apr,IIf(Month([WorkDate]) = 5, [WorkHours], 0) AS May,IIf(Month([WorkDate]) = 6, [WorkHours], 0) AS Jun
FROMWorkingHours
WHERE(((Year([WorkDate])) = 2018));

将查询保存为 v1。基于刚才创建的查询 v1,新建一个查询:

选取 V1 的所有字段:

在【设计】选项卡中,点击 “汇总” 按钮,此时在表下面增加了一行:总计,界面变为:

因为我们需要统计各个月份的工时,所以将除了 EmployeeID 字段之外的其他字段更改为 “合计”,同时保持列名不变。

对应的 SQL 语句如下:

SELECTV1.EmployeeID,Sum(V1.Jan) AS Jan,Sum(V1.Feb) AS Feb,Sum(V1.Mar) AS Mar,Sum(V1.Apr) AS Apr,Sum(V1.May) AS May,Sum(V1.Jun) AS Jun
FROMV1
GROUP BYV1.EmployeeID;

基于查询的查询其实是一个子查询,我们在 from V1 前加上 () as, sql 语句变为下面的样子:

SELECTV1.EmployeeID,Sum(V1.Jan) AS Jan,Sum(V1.Feb) AS Feb,Sum(V1.Mar) AS Mar,Sum(V1.Apr) AS Apr,Sum(V1.May) AS May,Sum(V1.Jun) AS Jun
FROM() as V1
GROUP BYV1.EmployeeID;

然后把刚才查询 v1 的 sql 语句放在括号中:

SELECTV1.EmployeeID,Sum(V1.Jan) AS Jan,Sum(V1.Feb) AS Feb,Sum(V1.Mar) AS Mar,Sum(V1.Apr) AS Apr,Sum(V1.May) AS May,Sum(V1.Jun) AS Jun
FROM(SELECTWorkingHours.EmployeeID,IIf(Month([WorkDate]) = 1, [WorkHours], 0) AS Jan,IIf(Month([WorkDate]) = 2, [WorkHours], 0) AS Feb,IIf(Month([WorkDate]) = 3, [WorkHours], 0) AS Mar,IIf(Month([WorkDate]) = 4, [WorkHours], 0) AS Apr,IIf(Month([WorkDate]) = 5, [WorkHours], 0) AS May,IIf(Month([WorkDate]) = 6, [WorkHours], 0) AS JunFROMWorkingHoursWHERE(((Year([WorkDate])) = 2018))) as V1
GROUP BYV1.EmployeeID;

这样就实现了一个完整的查询,比手工编写方便太多了。如果有更多层的子查询,都可以用同样的方法来实现。


http://chatgpt.dhexx.cn/article/1wXEr3Sw.shtml

相关文章

使用 Access 查询设计器轻松构造复杂 SQL 语句 (2)

上一篇的 sql 语句蛮简单的,接下来,来看一个相对复杂的的场景。假设我们要编写一个查询,计算期间物料进出存的查询。需要用到 5 个表,将创建表的 sql 语句贴在下面,示例数据也已经上传到 github。 物料主数据表 (mate…

基于Access的学生信息管理系统设计(上):表建立、表查询设计

在学校的教务管理中,学生信息的管理是的一非常重要的环节,学生信息管理是一个学校信息管理的核心和信息管理的基础。现在我们国家的学校的信息管理系统开始逐步实现信息化管理,但是这样的管理机制并不能完全适应信息时代的超高速发展的各种要…

Access教程 第三章 查询

本章内容 ◆ 查询的概念、种类和作用。 ◆ 各种查询的建立。 ◆ 查询的应用。 一、查询的概念 1 .什么是查询 查询就是依据一定的查询条件,对数据库中的数据信息进行查找。它与表一样,都是数据库的对象。它允许用户依据准则或查询条件抽取表中的记录与字段。 Acce…

SQL Server 不允许保存更改的解决方法

对于表的修改出现不允许保存更改的解决方法,刚开始以为是不能保存设置主键,后来发现不是这样的,是设置的问题。 点击【工具】——【选项】,点击【设计器】——【表设计器和数据库设计器】,把“阻止保存要求重新创建表…

【小5聊】Sql Server 2012 更改数据类型之提示不允许保存更改解决方法

1、创建表,然后添加了一两个字段保存创新一张新表 2、当再次更改其中一个字段的数据类型时,提示如下信息 3、解决方法,如下 【一句话一感想一心情】版本更新,增加测颜值推荐图文,来体验下句子的魅力

SQL Server不允许保存更改【解决】

问题: 解决: 1、工具→选项 2、设计器→取消”阻止保存要求重新创建表的更改“→确定

SQL Server 【不允许保存更改】问题解决图解

问题点 当表已经被设计保存后,再次设计表,使用设计-增加删除列 或其他方式修改了表的结构时,选择保存。 无法保存,出现以下警告提示: 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行…

SQL Server修改表结构,不允许保存更改解决方案

解决方案 当修改表结构时,sql server会弹出对话框,显示以下内容: 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”选项。 分析这句话, 1、…

SQL SERVER—修改时不允许保存修改

【前言】 在之前机房合作的时候,也经常遇到SQL Server错误提示:不允许保存修改这个问题。当时不是连接的自己本地的数据库,以为是数据库在谁的本地电脑上才能修改,现在才明白,其实不是这样的。下面来看看如何解决问题…

修改SQLServer数据库已存在的表结构保存后提示“不允许保存更改”解决办法

报错截图如下: 解决方法如下: 1、单击SQL Server的“工具”→“选项”,如下图: 2、选择“设计器”,右侧取消“阻止保存要求重新创建表的更改(S)”勾选。

SQL Server 不允许保存更改

在创建了表之后,添加了数据,想修改一下数据库的数据结构,比如把varchar改成nvarchar,sql通常会弹出如下错误提示: 解决办法:工具》选项》Designers__表设计器和数据库设计器__然后勾选掉“阻止保存要求重新…

SQL server修改字段名等出现不允许保存更改的解决方法

问题: 解决方法: 点击 工具->选项->设计器->表设计器和数据库设计器->去掉【阻止保存要求重新创建表的更改】前面的勾

SQL Server基础 第三章 数据表基本操作(增删改查,不允许保存更改异常!)

往表里插数据我们现在有两种方式第一种是编辑直接修改,第二种是通过查询来修改数据 两种方法的区别 第一种更直接,如果数据量小那么直接改就好了,那如果数据量稍微庞大我们就需要用新建查询来进行表内容的修改了!!&a…

SQL Server不允许保存更改的解决方法

点击上面的【工具】→【选项】 在选项对话框中,点击【设计器】→【表设计器和数据库设计器】 去掉【阻止保存要求重新创建表的更改】前面的勾,然后确定 好啦,再去试试吧,应该可以正常修改表的结构啦 \(^o^)/

解决方法-SQLserver建表后更改列,显示不允许保存更改。您所做的更改要求删除并重新创建以下表

SQLserver建表后更改列,显示不允许保存更改。您所做的更改要求删除并重新创建以下表。 解决方法: 工具选项卡—选项—设计器,去掉"阻止保存要求重新创建表的更改"的勾选就可以了,之后再更改列的时候就不会改不了了。

SQL Server 之 修改时不允许保存更改

SQL Server错误提示:不允许保存更改。 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或者启用“阻止保存要求重新创建表的更改”选项。   修改数据库的数据结构,比如增加字段,修改字段类型&#…

sql2019更改了表的部分字段设计出现不允许保存更改解决方案

保存时出现错误 解决方案: 点击工具下的选项 打开如下窗口,选择左边的设计器,再取消右边的组织保存要求重新创建表的更改,就ok了

SQL不允许保存更改,阻止保存要求重新创建表的更改

修改数据库表结构时提示【不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建表的更改"选项。】 工具/原料 数据库 方法/步骤 1 登录sql2008,找到数据库【news】展开表文件夹 2 在表…