MS Access查询在同一行的不同字段中具有相同数据的记录

时间:2014-07-25 13:12:37

标签: sql ms-access

标题有点令人困惑,但我会在这里解释我的问题: 所以我有一个数据库表,其中有数百万行支出数据被分解成不同的时间字段(period1 - period14)。现在我需要做的是写一个查询,它将返回记录,其中一个时期的支出等于同一记录中不同时期的支出。所以基本上这意味着如果我有一个reecord,其中period1的支出是100美元,然后在period5中的支出也是100美元,它会将该记录添加到新表中。我尝试过类似下面代码的东西,但由于我是非常新的访问它是相当复杂/低效的,也没有做我需要它。

INSERT INTO Contracts 
SELECT *
FROM SPENDDETAIL
WHERE (SPENDDETAIL.Period1 = SPENDDETAIL.Period2 OR SPENDDETAIL.Period3 [...] OR SPENDDETAIL.Period14)
AND (SPENDDETAIL.Period1 <> 0 OR SPENDDETAIL.Period2 <> 0 [...] OR SPENDDETAIL.Period14 <> 0);

非常感谢任何帮助,谢谢!

哦,我也知道这段代码只会返回记录,其中period1花费等于其他任何时期的花费,这只是开始尝试使查询做我需要的。

1 个答案:

答案 0 :(得分:0)

这些内容可能会让你开始:

SELECT Id, Value, COUNT(*) FROM
(SELECT Id AS Id, 1 AS Period, Period1 AS Value FROM SPENDDETAIL
UNION ALL
SELECT Id AS Id, 2 AS Period, Period2 AS Value FROM SPENDDETAIL
UNION ALL
SELECT Id AS Id 3 AS Period, Period3 AS Value FROM SPENDDETAIL
etc...) x
GROUP BY Id, Value
HAVING COUNT(*) > 1

其中Id是数据的每一行的一些唯一标识符(假设有这样的事情)。

这将为您提供ID和匹配值的列表。