【发布时间】:2012-03-27 12:56:19
【问题描述】:
我有一张如下所示的表格:
ID Subid Time Value Value2
1 1 3 100 2
1 1 4 100 2
2 2 3 200 1
2 2 4 200 2
4 4 4 10 4
5 6 3 10 2
5 6 4 12 2
我现在要做的只是显示从时间 3 到时间 4 存在差异的条目。所以结果应该如下所示:
ID Subid Time Value Value2
2 2 3 200 1
2 2 4 200 2
4 4 4 10 4
5 6 3 10 2
5 6 4 12 2
进入第二部分的条件如下: 如果有两个条目具有相同的 ID 和 Subid,但月份不同,则检查 value 和 value2 是否相等。如果两者都相等,则删除该条目,否则显示该条目。 如果在其他时间找不到匹配项,则也显示该条目。 通常这个表会有很多匹配的条目,所以我想通过整理这些来让我的生活更轻松。
我必须使用 MS Access (2010) 来执行此操作。
感谢您的帮助。
在雷穆回答后编辑:
我现在遇到的问题是我实际上并没有上面显示的表格,而是使用另一个查询创建它。所以现在我只是将创建该表的查询放在 Remou 使用它的四个地方......我确信有更好的方法来做到这一点,但我想不出来......
SELECT t2.*
来自 (选择 t.ID、t.SubID、t.Time、t.Value、t.value2、t.value 来自
( 巨大的选择在这里有 3 个连接)t
WHERE t.Time=4) AS t2
LEFT JOIN
(SELECT t.ID, t.SubID, t.Time, t.Value, t.value2, t.value
FROM
( 巨大的选择在这里有 3 个连接)t
WHERE t.Time=3) AS t1
ON t2.Id = t1.Id
WHERE t2.value<>t1.value
OR t2.value2<>t1.value2
OR t1.Id Is Null
联合所有
SELECT t1.* FROM
(SELECT t.ID, t.SubID, t.Time, t.Value, t.value2, t.value
FROM
( 巨大的选择在这里有 3 个连接)t
WHERE t.Time=3) AS t1
LEFT JOIN
(SELECT t.ID, t.SubID, t.Time, t.Value, t.value2, t.value
FROM
( 巨大的选择在这里有 3 个连接)t
WHERE t.Time=4) AS t2
ON t1.Id=t2.Id
WHERE t1.value<>t2.value
OR t1.value2<>t2.value2
OR t2.Id Is Null
ORDER BY Id, EntryNo;
【问题讨论】:
-
这真的很难。它只适用于分析功能,我不确定,它在 MS Access 中可用。
-
遗憾的是,这是 MS Access 一直缺少的一项功能,如果可以的话,您最好在 Excel 中比较连续的行。
-
嗨。不幸的是,我不能在 Excel 中真正做到这一点。
标签: sql ms-access ms-access-2010