1

您好,我是 sql 的新手,所以请多多包涵。

所以我有两张桌子,一张是Transaction桌子,另一张是Category桌子。

Transaction表由交易信息组成,其中包括:

date, description, amount, category_id

该表将保存所有事务。

Category表包括:categoryId , name

例如,类别将像“娱乐”、“购物”、“食品”等)

我想要做的是能够检查过去 3 个月中每个月发生的所有类别类型的交易并返回这些类别。

例如:

如果我今天(12 月)运行此查询,假设在 9 月(2012 年 8 月 3 日)、10 月(2012 年 9 月 9 日)和 11 月(2015 年 10 月)发生了“购物”交易/2012) 查询应返回“购物”,因为在过去 3 个月内发生了购物交易。

查询可以返回多个类别,只要在过去 3 个月的每个月中都有一个类别的过去交易。我希望我说得通。

任何有用的建议或示例将不胜感激。

谢谢,东盟

4

2 回答 2

1

您想使用函数 date_sub。

看看这个:旧的 Stackoverflow 问题

并阅读 date_sub 函数:MySQL Reference

于 2012-12-13T05:47:33.930 回答
0

这些sql没有经过测试。只是在飞行中创建它..

微软SQL

SELECT Category.name FROM Category INNER JOIN Transaction ON Category.categoryId = Transaction .category_id where DATEDIFF(mm,Transaction.date, Now()) <= 3 GROUP BY Category.name

MYSQL

SELECT DISTINCT Category.name FROM Category INNER JOIN Transaction ON Category.categoryId = Transaction .category_id where PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM NOW()), EXTRACT(YEAR_MONTH FROM Transaction.date)) <= 3
于 2012-12-13T06:29:09.733 回答