我有交易,人員,交易日期,物品等數據庫。 每次有人購買物品時,交易存儲在表格中,如下所示:特定時間段內的多筆交易,受日期範圍限制
personNumber, TransactionNumber, TransactionDate, ItemNumber
我想要做的是找到誰,從2012年(transactionDate)1月1日起至2012年3月1日已多次購買同一ItemNumber在14天內(配置)或更少的人(personNumber)。然後我需要在報告中列出所有這些交易。
的樣本數據:
personNumber, TransactionNumber, TransactionDate, ItemNumber
1 | 100| 2001-01-31| 200
2 | 101| 2001-02-01| 206
2 | 102| 2001-02-11| 300
1 | 103| 2001-02-09| 200
3 | 104| 2001-01-01| 001
1 | 105| 2001-02-10| 200
3 | 106| 2001-01-03| 001
1 | 107| 2001-02-28| 200
結果:
personNumber, TransactionNumber, TransactionDate, ItemNumber
1 | 100| 2001-01-31| 200
1 | 103| 2001-02-09| 200
1 | 105| 2001-02-10| 200
3 | 104| 2001-01-01| 001
3 | 106| 2001-01-03| 001
你怎麼會去這樣做呢?
我試着做它像這樣:
select *
from (
select personNumber, transactionNumber, transactionDate, itemNumber,
count(*) over (
partition by personNumber, itemNumber) as boughtSame)
from transactions
where transactionDate between '2001-01-01' and '2001-03-01')t
where boughtSame > 1
連帶我:
personNumber, TransactionNumber, TransactionDate, ItemNumber
1 | 100| 2001-01-31| 200
1 | 103| 2001-02-09| 200
1 | 105| 2001-02-10| 200
1 | 107| 2001-02-28| 200
3 | 104| 2001-01-01| 001
3 | 106| 2001-01-03| 001
的問題是,我不希望TransactionNumber 107做什麼,因爲這內不14天。我不確定應該在哪裏投入14天的限制。我可以做一個過時的,但是在哪裏,在哪?
這裏感到困惑,交易的別名是「T」正如子選擇一樣。 – Derek 2013-02-27 22:58:10
謝謝,似乎這樣做。我確實看到這裏出現的單身單身人士,但我可以手動刪除這些單身人士。 – Derek 2013-02-27 23:36:27
這很好,似乎沒有得到最後一筆交易,如果它在14天內,它確實會得到第一筆交易。 – Derek 2013-03-05 00:07:03