标题有点令人困惑,但我会在这里解释我的问题: 所以我有一个数据库表,其中有数百万行支出数据被分解成不同的时间字段(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花费等于其他任何时期的花费,这只是开始尝试使查询做我需要的。
答案 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和匹配值的列表。