[英]MS Access SQL If Row(n) = Row(n-1)
我正在开发一个访问数据库,在其中一个表输入中,由于使用了一些旧软件,由于以下原因,重复项经常出现在主键中(我最终希望成为主键):
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字段的重复查询产生:
ID | Fluid | Designer | Team |
--------------------------------------------------
A | Water | John | Piping |
A | Water | James | Piping |
B | Steam | Sam | Piping |
B | Steam | Sam | Modeling |
不需要自动删除这些重复项,因为重要的是要知道,例如,软件模型已更改设计者或已转移给另一个团队。 因此,这些都是手动检查的。
但是,此表最多可以包含30个字段,查找单个非重复字段可能会很麻烦。 这样,我想要的输出将是:
ID | Fluid | Designer | Team |
--------------------------------------------------
A | | John | |
A | | James | |
B | | | Piping |
B | | | Modeling |
我对SQL的经验很少,但是花了一些时间使用Visual Basic,所以我的猜测可能是这样的标准:
if(record(n)=record(n-1), display("")
但是,从我对访问和SQL的基本理解中,我知道到目前为止,将可视化基础与苹果与橘子进行比较。
我正在运行MS Access 2007-2010。
编辑:现在研究规范化(抱歉,我是一个初学者)。 虽然在我的数据库问题上有更多细节。 还更新了上面的决赛桌。
我认为我的数据库应该如何工作:
该软件中的错误源于以下事实:该软件将新数据修改为先前存在的数据,但仅删除精确的重复项。 如果说,不同的用户在模型上工作,那么除了更新当前的ID外,它会添加一个新行,除了其他用户外,所有其他细节都相同。
听起来您正在寻找的是一种简便的方法,可以直观地发现相似记录中较长列中的(少量)差异。 几年前,我有一个非常类似的项目,该项目产生了一个报告,以查看用户对其个人资料所做的更改。 我采用的方法是使用条件格式来突出显示不同的字段。
在您的比较报告中,我还将ID
列与组标题分组 ,以便在组之间轻松实现视觉分隔。
对于报表中的比较公式,您可以比较组中字段的Min()
和Max()
值。 如果最小值和最大值相同,则字段在整个组中匹配。 如果不是,则可以使用条件格式突出显示该字段。
我想如果您真的想花哨的话,可以扩展此表达式以使用运行总和以仅突出显示第二条记录中的更改。
另一种方法是为组中的后续记录隐藏重复的值 。 这将涉及相同的分组概念,但是在报告中,您需要将字段上的Hide Duplicates
属性设置为True
。 采用这种方法,您会在列表顶部看到完整的记录,但是随后的记录的字段仅在值更改时才会显示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.