人は私が望むものが誤解されているように私の質問を編集しました。SQLを使用してそのような結果を生成する方法
私は、次の列を持つテーブルを持っている:
- 会社
- トランザクションID
- 取引日
は私が望む結果は次のとおりです。
| COMPANY | Transaction ID |Transaction Date | GROUP |---------------------|------------------|------------------|---------- | Company A | t_0001 | 01-01-2014 | 1 | Company A | t_0002 | 02-01-2014 | 1 | Company A | t_0003 | 04-01-2014 | 1 | Company A | t_0003 | 10-01-2014 | 2 | Company B | t_0004 | 02-01-2014 | 1 | Company B | t_0005 | 02-01-2014 | 1 | Company C | t_0006 | 03-01-2014 | 1 | Company C | t_0007 | 05-01-2014 | 2
どこの取引日付は第一に企業のグループです。会社内の取引は、最も早いものから最新のものにソートされます。以前のトランザクションが3日以内に移動ウィンドウ期間内に実行された場合、トランザクションは行ごとにチェックされます。
たとえば、t_0002とt_0001が3日以内に離れているため、グループ1になります。t_0003とt_0002は3日以上離れているため、t_0003とt_0003は3日以上離れていてもグループ1になります。
私はこれをやり遂げる方法を考え出しました。最初に企業ごとにデータをグループ化して、トランザクションを日付順にソートしていますが、後になってしまいました。どのようなメソッドがありますか、私はこの結果を生み出すために使うことができますか?これに関する助言?
P.S.私はSQL Server 2014を使用しています。
*日付の差異が3日未満の場合、トランザクションは同じグループに属するとみなされます*。あなたのグループは定義が悪いです!毎日取引がある場合はどうなりますか? – lovasoa
これは_gapsとislands_の問題のようなものです。あなたはそれで検索することによって多くの例を見つけるでしょう。 –
これについての回答はありませんか? – Winston