【问题标题】:Select Query[SQL or Access SQL]- if value is x, do not return n records matching timestamp of record xSelect Query[SQL or Access SQL]-如果值为x,则不返回匹配记录x时间戳的n条记录
【发布时间】:2017-06-14 16:05:02
【问题描述】:

我有一个包含过多记录的活动日志表。每条记录都有描述、处理时间、处理日期、用户。

我想创建一个查询选择记录,如果描述类似于“新帐户”,则不返回与“新帐户”记录的时间、日期和用户匹配的 2 条记录。

这样的事情可能吗?

每次创建新帐户时,都会自动生成其他条目,我想省略。

即 期望的结果: 2017 年 2 月 28 日下午 1:30,David,新帐户

2017 年 2 月 28 日下午 1:30,大卫,测试

不想要的结果:

2017 年 2 月 28 日下午 1:30,大卫,新帐户

2017 年 2 月 28 日下午 1:30,大卫,地址已添加

2017 年 2 月 28 日下午 1:30,大卫,状态已更新

2017 年 2 月 28 日下午 1:30,大卫,测试

该示例删除了与出现“新帐户”的时间、日期和用户相匹配的两条记录。删除的记录可以在“新账户”之前或之后,这不是太重要

【问题讨论】:

  • 你能改写你的问题吗?我已经阅读了 4 次,无法理解您的要求。 “不返回 2 条记录”部分对我来说没有意义。
  • 用一个例子编辑了主帖
  • 你能不能只在 where 子句中加入 WHERE description'address added' AND description'status updated' ?还是我还是不明白?
  • description 可以容纳数百个不同的字符串,具体删除什么并不重要,每个新帐户必须删除 2 条记录
  • 你不在乎哪两条记录?

标签: sql ms-access select


【解决方案1】:

这样的事情可能会奏效(续我的评论)。

SELECT [Date], [Time], User, FIRST(Description) as MyDescription
FROM MyTable
GROUP BY Date, Time, User, Description='New Account'

【讨论】:

  • 如果是手动输入的新帐户,您可能有拼写错误和多余的空格。您必须更改表达式以使用如下内容:Description LIKE '*New*Account*'
  • 在进一步测试中,结果集将返回具有相同日期、时间和用户的记录。如果这些记录出现在“新帐户”条目之后,它似乎只会删除正确的记录。它还将保留给定日期/时间/用户的第一条记录,只要它是第一条记录,因此如果同一用户和时间发生“新帐户”,则新帐户记录将被删除。有没有办法解决这个问题?
  • 对于每个日期/时间/用户组合,它将保留与'*New*Account*' 或您使用的任何标准匹配的第一条记录以及与该标准不匹配的第一条记录。非新帐户记录是在之前还是之后出现并不重要。如果您有任何不同,则需要调整分离标准。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多