MS Access - 对于给定变量的每次出现,将“计数”值加一?

2024-02-03

我正在寻找一个查询,该查询将:读取一列中一行的当前值,将其与上面的行进行比较,如果上面的行匹配则按顺序计数。本质上,这听起来像是一个运行计数,而不是 Count(*),几乎就像每组行上的行应该为 Count(Variable)-1,直到达到最小值零。下面的示例假设我们有一个每日销售列表,并计算给定产品 ID 的出现次数。这可能吗?

选择计数(ProductID)作为 SalesCount 作为 SalesOccurence 的未知公式


您所描述的有时可以使用 Access SQL 来完成自加入其中包括其中一个字段之间的大于或小于关系。例如,假设我们有一个名为 [SalesHistory] ​​的表,其中包含数据

ProductID  SalesDate   DailySales
---------  ----------  ----------
001        2013-10-16         225
001        2013-10-17         195
001        2013-10-18         250
002        2013-10-16         350
002        2013-10-17         375
002        2013-10-18         330

查询

SELECT t1.ProductID, t1.SalesDate, t2.ProductID, t2.SalesDate
FROM 
    SalesHistory t1 
    INNER JOIN 
    SalesHistory t2 
        ON t1.ProductID = t2.ProductID 
            AND t1.SalesDate >= t2.SalesDate
ORDER BY t1.ProductID, t1.SalesDate

返回以下结果

t1.ProductID  t1.SalesDate  t2.ProductID  t2.SalesDate
------------  ------------  ------------  ------------
001           2013-10-16    001           2013-10-16  
001           2013-10-17    001           2013-10-17  
001           2013-10-17    001           2013-10-16  
001           2013-10-18    001           2013-10-18  
001           2013-10-18    001           2013-10-17  
001           2013-10-18    001           2013-10-16  
002           2013-10-16    002           2013-10-16  
002           2013-10-17    002           2013-10-17  
002           2013-10-17    002           2013-10-16  
002           2013-10-18    002           2013-10-18  
002           2013-10-18    002           2013-10-17  
002           2013-10-18    002           2013-10-16  

请注意,对于t1.ProductID='001'返回一行t1.SalesDate=#2013-10-16#, 两行t1.SalesDate=#2013-10-17#, 等等。因此,我们可以调整该查询来计算返回的行数,这将为我们提供按 ProductID 排列的每个日期的排名

SELECT t1.ProductID, t1.SalesDate, COUNT(*) AS DateRank
FROM 
    SalesHistory t1 
    INNER JOIN 
    SalesHistory t2 
        ON t1.ProductID = t2.ProductID 
            AND t1.SalesDate >= t2.SalesDate
GROUP BY t1.ProductID, t1.SalesDate

...返回:

ProductID  SalesDate   DateRank
---------  ----------  --------
001        2013-10-16         1
001        2013-10-17         2
001        2013-10-18         3
002        2013-10-16         1
002        2013-10-17         2
002        2013-10-18         3

如果我们在 Access 中将该查询保存为 [SalesDateRanksByProduct],那么我们可以在另一个查询中使用它来在原始数据旁边显示该 DateRank“计数器”:

SELECT 
    SalesHistory.ProductID, 
    SalesHistory.SalesDate, 
    SalesHistory.DailySales, 
    SalesDateRanksByProduct.DateRank
FROM 
    SalesHistory 
    INNER JOIN 
    SalesDateRanksByProduct 
        ON (SalesHistory.SalesDate = SalesDateRanksByProduct.SalesDate) 
            AND (SalesHistory.ProductID = SalesDateRanksByProduct.ProductID)
ORDER BY SalesHistory.ProductID, SalesHistory.SalesDate;

...返回:

ProductID  SalesDate   DailySales  DateRank
---------  ----------  ----------  --------
001        2013-10-16         225         1
001        2013-10-17         195         2
001        2013-10-18         250         3
002        2013-10-16         350         1
002        2013-10-17         375         2
002        2013-10-18         330         3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MS Access - 对于给定变量的每次出现,将“计数”值加一? 的相关文章

  • 删除连接到另一表 SQL 的一个表中的记录

    我有两个表 一个包含 212 000 条记录 已弃用的记录 另一个包含 10 500 000 条记录 我想在 id 和 version number 字段上连接两个表 因为两个表都有这些字段 我希望从连接表中删除匹配的记录 来自连接表 即从
  • SQL 错误:“没有这样的表”

    我试图解决为什么我的代码为所有查询返回 null 的原因 最后发现 sql 查询什么也没有返回 我使用简约代码创建了一个新的 AIR 文档 s WindowedApplication
  • 在 MySQL 中对整数字段运行带引号的数字(字符串)查询时会发生哪些复杂情况

    在 SQL 中 不应引用整数 因为如果引用 它将是一个字符串 但我很好奇如果我这样做会出现什么问题 并发症 例如 SELECT FROM table WHERE id 1 正确的 vs SELECT FROM table WHERE id
  • 串行类型的外键 - 确保始终手动填充

    我有两个表 国家和地区 CREATE TABLE Countries id SERIAL name VARCHAR 40 NOT NULL PRIMARY KEY id CREATE TABLE Regions id SERIAL coun
  • Linq To SQL - 拥有和分组依据

    我下面这个查询工作正常 不过我想使用 Linq 来实现它 select u ID u NAME from Task t join BuildingUser bu ON bu ID BUILDING t ID BUILDING join Us
  • T-SQL:用最新的非空值替换 NULL 的最佳方法?

    假设我有这张表 id value 1 5 2 4 3 1 4 NULL 5 NULL 6 14 7 NULL 8 0 9 3 10 NULL 我想编写一个查询来替换任何NULL值与表中最后一个不为空的值在那一栏里 我想要这个结果 id va
  • 如何使用 vb.net 将数据插入 Access 表?

    我想在 Access 数据库中插入一个新行 我正在考虑做类似的事情 oConnection new Connection connectionstring oTable oCennection table Orders oRow oTabl
  • SQL 2008全文索引填充延迟

    我的经理说 在基础表数据更改后 可能需要一段时间才能更新全文搜索索引 例如 如果我有一张桌子Products有一个柱子Description我更新了该描述 然后我可能需要一些时间才能搜索该新描述 真的吗 这需要多长时间 SQL 2008 对
  • 根据日期顺序排名

    我的数据如下 Heading Date A 2009 02 01 B 2009 02 03 c 2009 02 05 d 2009 02 06 e 2009 02 08 我需要如下排名 Heading Date Rank A 2009 02
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • SQL Server 连接其他表中不存在的位置

    Service Asset AssetService Id Name Id Name AssetId ServiceId
  • 提高第一个查询的性能

    如果执行以下数据库 postgres 查询 则第二次调用要快得多 我猜第一个查询很慢 因为操作系统 linux 需要从磁盘获取数据 第二个查询受益于文件系统级别和 postgres 中的缓存 有没有一种方法可以优化数据库以快速获得结果fir
  • 使用子查询 select 创建新表

    我试图从子查询选择创建一个新表 但出现以下错误 附近的语法不正确 SELECT INTO foo FROM SELECT DATEPART MONTH a InvoiceDate as CalMonth DATEPART YEAR a In
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • SQL 连接两个没有关系的表

    我有具有相同结构的不同表 我想通过其中一列将它们连接起来 问题是他们不共享该专栏中的信息 Table 1 Type A Name Value Table 2 Type B Name Value 结果表 在单列中 nameFromA name
  • 数字表与递归 CTE 生成一系列数字

    为什么使用数字表比使用递归 CTE 动态生成它们要快得多 在我的机器上 给定一张桌子numbers单列n 主键 包含从1到100000的数字 查询如下 select n from numbers 大约需要 400 毫秒才能完成 使用递归 C
  • 从 Getdate() 获取时间

    我想采取Getdate 结果 例如 2011 10 05 11 26 55 000 into 11 26 55 AM 我看过其他地方并发现 Select RIGHT CONVERT VARCHAR GETDATE 100 7 这给了我 11
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 使用加权行概率从 PostgreSQL 表中选择随机行

    输入示例 SELECT FROM test id percent 1 50 2 35 3 15 3 rows 你会如何编写这样的查询 平均 50 的时间我可以获得 id 1 的行 35 的时间 id 2 的行 15 的时间 id 3 的行

随机推荐

  • iOS FFT 绘制频谱

    我读过这些问题 使用 Apple FFT 和加速框架 https stackoverflow com questions 3398753 using the apple fft and accelerate framework 使用 Acc
  • 选择 Firefox 附加目录中的文件

    为了简单起见 我将基于 XUL 的 Firefox 插件转换为基于 SDK 的版本 我在基于 XUL 的版本中使用的 XPCOM 模块似乎可以工作 但 ci nsIFile 的行为不同 我不知道如何导航到当前位于目录最高层的 smartPr
  • ASP.NET MVC MultiSelectList 的选定值未正确选择

    我知道其他人也问过这个问题 但我对此完全困惑 这将显示未选择任何值的下拉列表 这将显示下拉列表 其中包含我在 Model items 中传递的值 这些值已正确选择 就像我所期望的那样
  • 使用 gdb 调试 C++11 右值引用

    我刚刚注意到我无法调试rvalue参考文献与gdb 7 7 1适当地 void simple int i 当我输入这个简约函数时 我无法获得任何有意义的信息i It s type and value are unknown to gdb s
  • 当我实现自定义 Lint 检测器时如何调试 java 源代码?

    我是一名 Android 开发者 我已经通过实现新的 XXXDetector 和 XXXIssueRegistry 设计了自己的 lint 规则 这是我的源代码片段 我的 XXXIssueRegistry 文件 public class M
  • 关闭 Windows 8 超级按钮栏

    我有一台 Surface Pro 我需要将其 锁定 为一种 Kiosk 模式 我知道 信息亭模式 的更新正在进行中 但是我需要在此之前执行此操作 我在互联网上进行了搜索 但似乎您无法通过滑动来禁用超级按钮栏screen 我找到了禁用触控板的
  • C 静态库的包装

    我有一个用于相机的 C 静态库 现在计划为 Windows 8 开发 C WPF UI 它将使用 C 静态库来捕获视频 音频 我的想法是 C Static 会有 C CLI 包装器 包装器将是托管 Dll C WPF UI 将使用此 Dll
  • 在克隆期间更改内部元素 id

    我正在单击按钮时克隆 DIV 元素 我可以更改正在克隆的 DIV 元素的 ID 值 但是是否可以更改内部元素的 id 在下面的代码中 我更改了 Id selection克隆时 我需要动态更改 id select div div class
  • 使用 Spring RestTemplate 访问 Https Rest 服务

    谁能给我提供一个代码示例来使用 Spring Rest 模板访问通过 HTTPS 保护的其余服务 URL 我有证书 用户名和密码 基本身份验证用于服务器端 我想创建一个可以使用提供的证书 用户名和密码 如果需要 连接到该服务器的客户端 Ke
  • 头部内有多个 RSS 链接标签,标记是否有效?

    在 RSS feed 中包含多个 RSS feed 是否有效 tag 我的意思是 标签如下 etc 我们有一小部分 总共五个 RSS 提要 我们已经拥有了一段时间 但只在头标签中包含了 主要 提要 可以将它们全部包括在内吗 是的 这是完全有
  • jquery UI - 将日期添加到选定日期

    这看起来很简单 但我无法解决它 我真的需要这个 如何通过 SelectedDate 事件将日期添加到选定日期 我需要对 2 个日期选择器执行日期范围限制 一旦用户设置了一个日期选择器 另一个日期选择器只需要允许日期等于第一个日期选择器的所选
  • WHERE 子句中的动态条件

    我有一个存储过程 想知道是否可以建立一个动态的where基于参数的条件 假设我有这个查询 SELECT FROM tbl Users 现在 我有一个名为 username 我想用它来建立一个动态的where条件 通过我的程序可能是 1 个或
  • 从文件读取/写入 std::unordered_map 的更快方法

    我正在与一些非常大的公司合作std unordered maps 数亿个条目 并且需要将它们保存到文件中或从文件中加载它们 我目前执行此操作的方法是迭代映射并一次读取 写入每个键和值对 std unordered map
  • 增加 Linux 中 TCP/IP 连接的最大数量

    我正在对服务器进行编程 似乎我的连接数量受到限制 因为即使我将连接数量设置为 无限 我的带宽也没有饱和 如何增加或消除 Ubuntu Linux 机器一次可以打开的最大连接数 操作系统是否限制了这一点 或者是路由器或ISP 或者是别的什么
  • 火鸟远程备份

    我想备份 firebird 数据库 我正在使用 gbak exe 实用程序 效果很好 但是 当我想从远程计算机进行备份时 备份文件存储在服务器文件系统上 有没有办法强制 gbak 实用程序下载备份文件 Thanks 备份存储在 Firebi
  • chrome:为什么 css 3d 对变换比例 < 0 的大元素进行变换会导致白屏错误?

    我遇到了屏幕区域在镀铬中变白的问题 下面是一个简化的测试用例 从测试来看 可以肯定的是 变换缩放和旋转的组合导致了该问题 为了用少量 html 元素重现该问题 我夸大了情况并使用了按比例缩小 0 125 的 5000px 正方形 请注意 只
  • Angular 2 单元测试:找不到名称“描述”

    我正在跟进本教程来自 angular io https angular io docs ts latest guide testing html jasmine 101 正如他们所说 我创建了 Hero spec ts 文件来创建单元测试
  • -XX:-PrintGC 和 XX:-PrintGCDetails 标志有什么作用?

    我找到了 JVM 标志here http java sun com javase technologies hotspot vmoptions jsp 有没有更详细的解释他们到底做什么 设置此标志会将 JVM 进行的所有垃圾收集写入日志文件
  • bash 输出为 json 格式

    我是 Linux 和 Bash 脚本新手 我正在尝试将 Ubuntu Linux 中的几个 bash 脚本输出为 JSON 格式 但是 我似乎无法让它正常工作 我的目标是得到这个 date u Y m d H M S date and ti
  • MS Access - 对于给定变量的每次出现,将“计数”值加一?

    我正在寻找一个查询 该查询将 读取一列中一行的当前值 将其与上面的行进行比较 如果上面的行匹配则按顺序计数 本质上 这听起来像是一个运行计数 而不是 Count 几乎就像每组行上的行应该为 Count Variable 1 直到达到最小值零