データセットを他のいくつかのデータセットに分割する際に問題が発生しました。これのベースライン:鍵は異なる国で同時に使用できます(国IDは列でです)。 1つのキー(列b in picture)は、一定時間後、この場合は120日後に再利用できます。 1つのキーには日付と共に約10のイベントがあります。データをウィンドウに分割してtsqlのウィンドウから最小値を取得する
私がやってみました事、オーバーセット全体やパーティションの最初の日付とB列を取り、の分の日付の間の日数を取得するためにdatediff()
を使用して全体のセットとそれぞれ別々のイベント。その後、それらをグループ化するためにdatediff/120によって返された番号を使用します。私が本当にやりたかったことは、各セット(セット全体ではなく)の最小日付をとり、それに基づいて計算することです。親切な援助者が私が何をしているのかを理解するのに十分なほど明確に説明してくれることを本当に望みます。今私は考えています...私は、一組の最小日付を得てそれを120で割ったとしても、私は間違った結果を得ることを一種心配しています。どんな提案も感謝しています! DATEDIFF(d,min(dates) OVER (PARTITION BY a, b), dates)/120
Visual explanation of what I need to achieve and how.
sample data desired outcome
| CountryId | Key | date | | CountryId | Key | date |
|-------------|-------------|--------------| |-------------|-------------|--------------|
| 2 | 093123124 | 2015-04-16 | | 2 | 093123124 | 2015-04-16 |
| 2 | 093123124 | 2015-04-16 | | 2 | 093123124 | 2015-11-24 |
| 2 | 093123124 | 2015-04-17 | | 2 | 093123124 | 2016-04-17 |
| 2 | 093123124 | 2015-04-17 |
| 2 | 093123124 | 2015-11-24 |
| 2 | 093123124 | 2015-11-24 |
| 2 | 093123124 | 2015-11-25 |
| 2 | 093123124 | 2015-11-25 |
| 2 | 093123124 | 2015-11-25 |
| 2 | 093123124 | 2016-04-17 |
| 2 | 093123124 | 2016-04-18 |
| 2 | 093123124 | 2016-04-20 |
| 2 | 093123124 | 2016-04-21 |
| 2 | 093123124 | 2016-04-22 |
あなたがデータをテキストとして投稿した場合、私たちは画像からコピーを貼り付けることができません。私たちにdbスキーマ、サンプルデータ、および期待される出力を示してください。 [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を向上させ、より良い回答を得る方法を学ぼう。 –
データをテキストとして追加したので、コピーしやすく、期待される結果も得られます。ヒントをありがとう。 –
最初は 'DISTINCT'のように見えます...しかし、私はあなたの欲望の出力のための論理を理解しません。 '11-25'はどこに行くの? 'a、b、c 'を使う代わりに、意味のある変数名を使う –