我有一个包含标识符,日期和有效位的表。
ID | Date | SalesID | InValid
| | |
1 | 2013-08-01 | 2 | False
2 | 2013-08-01 | 3 | False
3 | 2013-08-01 | 4 | False
4 | 2013-08-01 | 5 | False
5 | 2013-08-02 | 2 | False
6 | 2013-08-02 | 3 | False
7 | 2013-08-03 | 2 | True
8 | 2013-08-03 | 3 | False
9 | 2013-08-03 | 4 | False
ID是唯一编号 每个SalesID只有一个日期条目
我的问题是如何在过去30天内选出任何Invalid = true的SalesID的ID号。
因此,对于SalesID = 2,我想要加上前30天内的任何其他日期
ID | Date | SalesID | InValid
| | |
1 | 2013-08-01 | 2 | False
5 | 2013-08-02 | 2 | False
7 | 2013-08-03 | 2 | True
我希望这是有道理的。欢迎任何帮助
谢谢大家,非常快速的帮助,我还有很多需要学习的地方。我欠你的债
答案 0 :(得分:1)
我认为这就是你所需要的:
SELECT DISTINCT a.*
FROM table a
JOIN table b ON
b.SalesID=a.SalesID AND
b.InValid AND
a.Date >= b.Date-30 AND
a.Date <= b.Date
注意......日期数学可能取决于您使用的SQL引擎,以及日期列的实际数据类型。