首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MS访问SQL If Row(n) = Row(n-1)

MS访问SQL If Row(n) = Row(n-1)
EN

Stack Overflow用户
提问于 2018-07-26 10:24:32
回答 1查看 74关注 0票数 1

我正在开发一个access DB,在其中一个表输入中,副本经常出现在(我最终希望成为的)主键中,这是由于使用了一些旧的软件,原因如下:

代码语言:javascript
复制
ID |   Fluid      |   Designer   |   Team        |
--------------------------------------------------
A  |   Water      |   John       |   Piping      |
A  |   Water      |   James      |   Piping      |
B  |   Steam      |   Sam        |   Piping      |
B  |   Steam      |   Sam        |   Modeling    |
C  |   Hydrogen   |   Joe        |   Piping      |
D  |   Steam      |   Joe        |   Piping      |

引用ID字段的查询重复生成:

代码语言:javascript
复制
ID |   Fluid      |   Designer   |   Team        |
--------------------------------------------------
A  |   Water      |   John       |   Piping      |
A  |   Water      |   James      |   Piping      |
B  |   Steam      |   Sam        |   Piping      |
B  |   Steam      |   Sam        |   Modeling    |

自动删除这些副本是不想要的,因为重要的是要知道,比如说,软件模型改变了设计人员,或者被转移到了另一个团队。因此,这些都是人工审查的。

然而,这个表可以包含多达30个字段,找到一个不重复的字段可能会让人眼花缭乱。因此,我想要的输出是:

代码语言:javascript
复制
ID |   Fluid      |   Designer   |   Team        |
--------------------------------------------------
A  |              |   John       |               |
A  |              |   James      |               |
B  |              |              |   Piping      |
B  |              |              |   Modeling    |

我在SQL方面的经验很少,但我花了一些时间使用visual,所以我猜是一些标准,如:

代码语言:javascript
复制
if(record(n)=record(n-1), display("")

然而,从我对access和SQL的基本理解来看,我知道到目前为止,将visual与橘子联系起来是一个很大的问题。

我在运行MS Access 2007-2010年。

编辑:现在看看正常化(抱歉,我是个初学者)。不过,在我的DB问题上有更多的细节。还更新了上表。

我认为我的数据库应该如何工作:

  1. 从软件导入数据(每日)。这就产生了表1。
  2. 使用重复查询在ID列中查找任何重复项。这是表2。
  3. 使用查询生成一个表,该表将显示重复的is以及未复制的相应列。

软件中的错误源于这样一个事实:它将新的数据修改到已有的数据上,但只删除了精确的重复数据。如果说,一个不同的用户在模型上工作,那么它不会更新当前的ID,而是添加一个新的行,除了一个不同的用户之外,所有细节都是相同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-26 19:38:09

条件格式

听起来,您所要寻找的是一种简单的方法,可以直观地发现类似记录中的一长列中的(少数)差异。我有一个非常类似的项目,几年前我做了一个报告,用来查看用户对他们的个人资料所做的更改。我的方法是使用条件格式突出显示不同的字段。

在您的比较报告中,我还将使用一个ID列对组标头进行分组,以便于在组之间进行可视化分离。

对于报表中的比较公式,可以比较组中字段的Min()Max()值。如果Min和Max是相同的,则整个组的字段匹配。如果没有,则可以使用条件格式突出显示该字段。

我想,如果您想变得特别有趣,您可以扩展这个表达式,使用一个运行和来突出显示第二个记录中的更改。

隐藏重复值

另一种方法是对组中的后续记录进行隐藏重复值。这将涉及相同的分组概念,但在报告中,您将字段上的Hide Duplicates属性设置为True。采用这种方法,您将在列表的顶部看到一条完整的记录,但随后记录的字段仅在值更改时才会显示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51536598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档