如何从access中的表中获取选择性记录

2024-04-24

下面给出的是我的查询结果。但有很多冗余记录,因此,我想过滤掉这个查询的结果。我的目标是每个角度仅提取两个记录,第一个和最后一个。 例如当角度为195, 我想获得它的第一条记录日期=2/27/2017,时间=2:00:00 AM和 日期为的第二条记录2017 年 2 月 27 日,时间=9:00:00 AM。 同样,当角度变为210我想获得它的第一条记录日期=2/27/2017 时间=10:00:00 AM以及日期和时间为时的另一条记录2017 年 2 月 27 日和晚上 9:00:00。所有记录也是如此。 我尝试自己做,但它只返回每个角度的一条记录,仅返回最上面的一条记录,不知道如何获得最后一条记录。 我使用两个查询来完成此操作,(Query1)

SELECT final.Date, final.Angle
FROM final
GROUP BY final.Date, final.Angle

第二个查询是 (fileredOUTput)

SELECT Query1.Date, Query1.Angle, (SELECT TOP 1 final.Date FROM final WHERE  Query1.Date=final.Date AND Query1.Angle= final.Angle)
 AS NewDate,
 (SELECT TOP 1 final.Angle FROM final WHERE  Query1.Date=final.Date AND Query1.Angle= final.Angle) AS NewAngle,
 (SELECT TOP 1 final.earthCol.Value FROM final WHERE  Query1.Date=final.Date AND Query1.Angle= final.Angle) AS NewE_CV, 
(SELECT TOP 1 final.earthCol.ColNu FROM final WHERE  Query1.Date=final.Date AND Query1.Angle= final.Angle) AS New_E_CN,
 (SELECT TOP 1 final.mars_Col.Value FROM final WHERE  Query1.Date=final.Date AND Query1.Angle= final.Angle) AS NewM_CV,
 (SELECT TOP 1 final.Col_apart FROM final WHERE  Query1.Date=final.Date AND Query1.Angle= final.Angle) AS New_CApart,
 (SELECT TOP 1 final.mars_Col.ColNu FROM final WHERE  Query1.Date=final.Date AND Query1.Angle= final.Angle) AS NewM_CN, 
(SELECT TOP 1 final.Time FROM final WHERE  Query1.Date=final.Date AND Query1.Angle= final.Angle) AS NewTime
FROM Query1, final
WHERE (((Query1.Date) Between [Forms]![Query Form]![txtStartDate] And [Forms]![Query Form]![txtEndDate]));

查询结果和我需要的结果都用红色标记 https://i.stack.imgur.com/Pfa2L.png。 期待着听到您的意见。 谢谢。


Try this

SELECT * FROM final INNER JOIN
(SELECT Min(DDate + DTime) AS DDateTime, Angle FROM final GROUP BY Angle
UNION SELECT Max(DDate + DTime) AS DDateTime, Angle FROM final GROUP BY Angle) mm
ON final.DDate + final.DTime = mm.DDateTime AND final.Angle = mm.Angle

请注意,在测试中我将前两列的名称分别更改为 DDate 和 DTime,因为 Date 和 Time 是保留字。

EDIT

这使得它变得相当困难,特别是在没有 LEAD/LAG 功能的 Access 中。以下应该可行,但有人可能有更优雅的解决方案!

SELECT final.* FROM final INNER JOIN
(SELECT MIN(DDateTime) AS MDateTime, Angle FROM
(SELECT (f.DDate+ f.DTime) AS DDateTime, f.Earth_Value, f.Mars_Value, f.Earth_Col, f.Mars_Col, f.Diff, f.Angle, f.Col_Apart,
IIF(ISNULL((SELECT MIN(m.DDate + m.DTime) FROM final m where f.angle <> m.angle and (f.DDate+f.DTime) < (m.DDate+m.DTime))),
(SELECT MAX(DDate+DTime) FROM final),(SELECT MIN(m.DDate + m.DTime) FROM final m where f.angle <> m.angle and (f.DDate+f.DTime) < (m.DDate+m.DTime))) AS NextChangeDateTime
FROM final f order by DDate, DTime) g
GROUP BY g.Angle,g.NextChangeDateTime
UNION
SELECT MAX(DDateTime) AS MDateTime, Angle FROM
(SELECT (f.DDate+ f.DTime) AS DDateTime, f.Earth_Value, f.Mars_Value, f.Earth_Col, f.Mars_Col, f.Diff, f.Angle, f.Col_Apart,
IIF(ISNULL((SELECT MIN(m.DDate + m.DTime) FROM final m where f.angle <> m.angle and (f.DDate+f.DTime) < (m.DDate+m.DTime))),
(SELECT MAX(DDate+DTime) FROM final),(SELECT MIN(m.DDate + m.DTime) FROM final m where f.angle <> m.angle and (f.DDate+f.DTime) < (m.DDate+m.DTime))) AS NextChangeDateTime
FROM final f order by DDate, DTime) g
GROUP BY g.Angle,g.NextChangeDateTime) FLDates
ON final.DDate + final.DTime = FLDates.MDateTime

EDIT 2

从技术上讲,MS Access 中不存在临时表之类的东西。实际上,您只需创建一个普通表并在每次要使用它时删除其内容即可。

要创建表,您需要将其复制到查询窗口(SQL 视图)中,然后单击运行:

CREATE TABLE final (
    DDate       DATETIME     NOT NULL,
    DTime       DATETIME     NOT NULL,
    Earth_Value         DOUBLE   NOT NULL,
    Mars_Value         DOUBLE   NOT NULL,
    Earth_Col           INTEGER     NOT NULL,
    Mars_Col           INTEGER     NOT NULL,
    Diff           INTEGER     NOT NULL);

然后在现有的查询类型之前(您只需要第一行):

INSERT into final
SELECT etc.

现在您将能够完全按原样运行我的查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从access中的表中获取选择性记录 的相关文章

随机推荐

  • 引用 Attach() 中新定义的变量

    我想对数据框的列进行许多修改 然而 由于需要大量的列和转换 我想避免一遍又一遍地使用数据框名称 在 SAS 数据步骤中 您可以在一个数据步骤内创建一个变量并在定义后立即引用它 data A set A varA varB gt 1 varC
  • 如何检测pyside2中Qwebengine内的按钮点击

    我在 pyside2 中编写了一个应用程序 它在 QWebEngine 中打开一个网页 该网页有 2 个按钮 我不明白如何检测 pyside2 应用程序模块中的按钮单击 我需要对该按钮单击执行其他操作 Example 下面是我的代码 fro
  • main:Object 的未定义方法“run”

    部署时我得到以下输出 cap aborted NoMethodError undefined method run for main Object config deploy rb 37 in block 2 levels in
  • 我在使用 FileSystemWatcher [vb.net] 时遇到问题

    这是我第一次使用 FileSystemWatcher 但它不起作用 在受监视的路径中创建文件时不会触发它 我的目标是监视程序文件目录中的更改 我会将复制的文件与在线列表 我下载的 进行比较 我还没有完成该部分 如果找到匹配项它将做什么 我究
  • Jackson自定义反序列化器仅获取列表xml中的最后一个值

    我有以下 xml
  • SKMaps 显示黑色/蓝色背景

    我正在使用 SKMaps 在 android 中实现路线导航 为此 我展示了一个使用 SKMap 的单独活动 当我第一次展示该活动时 地图会显示并且导航正在工作 如果我从这个活动返回并再次启动这个导航活动 那么它将显示一个带有黑色 蓝色背景
  • 在 C# 中使用鼠标单击在图片框上绘制线条

    我正在尝试制作一个程序 可以在图片框 http msdn microsoft com en us library system windows forms picturebox 28v vs 110 29 aspx使用鼠标单击要绘制线的起点
  • 从输入跳到 CellTable 中的输入

    我有一个 CellTable 其中包含一堆渲染到的单元格
  • 迷你图渲染速度慢并且浏览器挂起

    迷你图 http omnipotent net jquery sparkline 非常适合制作小型内联图 但是 如果它们所在的容器是隐藏的 则不能简单地将它们绘制在幕后然后显示它们 您必须首先显示容器 然后调用 sparkline disp
  • 从子域登录 Facebook(太多“有效 OAuth 重定向 URI”)

    我遇到了以下问题 我正在使用 Facebook js sdk 进行登录过程 在应用程序设置中Site URL被设定为 http example com http example com 应用程序域 are example com www e
  • 无法在 NestedScrollView 内完全滚动

    不知何故 我无法在 NestedScrollView 内完全滚动 我的 NestedScrollView 内部是一个 TextView 其中有很多文本 下面有一个按钮 当我向下滚动时 我只能看到按钮的顶部 只有几个像素 它滚动得不够远 这是
  • 在Kestrel中重写后获取原始URL

    Apache 将根据重写的 URL 选择要提供服务的文件 但原始 URL 将传递给脚本 Kestrel 将重写的 URL 传递到管道中 可通过HttpContext Request Path 是否可以访问原网址来自中间件重写后 遵循 Tse
  • .Net Core 2.0 - 获取 AAD 访问令牌以与 Microsoft Graph 一起使用

    当使用 Azure AD 身份验证启动新的 Net Core 2 0 项目时 您将获得一个可以登录租户的工作示例 太棒了 现在我想获取登录用户的访问令牌并使用它来使用 Microsoft Graph API 我没有找到任何有关如何实现这一目
  • 在 odoo12 的表单视图中隐藏操作/更多按钮

    我想在 odoo12 中仅隐藏操作 更多按钮而不是打印按钮 我发现一些类似的问题在 odoo12 中不起作用 不是一个像样的答案 而是你的一个方向 源码中 我的版本是11 odoo 11 0 addons web static src js
  • 在分布式 dask 中,我们如何为每个工作人员选择 --nthreads 和 --nprocs ?

    我们如何选择 nthreads and nprocsDask 中每个工人的分布情况 我有 3 个工作线程 2 个工作线程有 4 个核心 每个核心有一个线程 1 个工作线程有 8 个核心 根据输出lscpu每个worker上的Linux命令
  • 如何将基数词转换为序数词

    有没有一种简单的方法可以将数字 1 2 3 转换为 1st 2nd 3rd 并且以这种方式我可以为该函数提供一种语言并具有它会返回我目标语言的正确形式吗 标准 C stl 或 boost 都可以 MFC 或 ATL win32 api 或我
  • 如何简洁地赋值并立即调用函数变量?

    以下是在闭包中定义匿名函数 调用该函数并忽略它的方法 function do stuff 这用于维持有限的范围而不向脚本添加大量内容 IIFE 立即调用函数表达式 如果您希望立即执行某个函数 同时仍保留该函数以供将来使用 该怎么办 如下所示
  • 在重新激活 WiFi/移动网络之前,服务中的 Android 位置侦听器无法工作

    我的位置侦听器工作正常 收集数据没有任何问题 但有时它不收集任何数据 我此时必须关闭并重新启动我的位置提供程序 重新启动可以解决问题 但是 这可能不是用户期望做的最好的事情 当我使用 GPS 作为提供商时 没有问题 位置侦听器在服务中工作
  • 在react-router-dom中隐藏某些页面的标题

    有没有办法可以仅隐藏 React Router 中某些路由的页面标题 我现在的问题是我的App组件呈现我的Main组件 其中包含我的BrowserRouter 和我的Header呈现在我的App组件 所以我无法根据路由路径渲染标题 这是一些
  • 如何从access中的表中获取选择性记录

    下面给出的是我的查询结果 但有很多冗余记录 因此 我想过滤掉这个查询的结果 我的目标是每个角度仅提取两个记录 第一个和最后一个 例如当角度为195 我想获得它的第一条记录日期 2 27 2017 时间 2 00 00 AM和 日期为的第二条