2


1

わかりました。 私のデータがこのように見えるなら:

表1

ID作成日1 2009年1月1日2 2009年1月3日3 2009年1月5日4 2009年1月10日5 2009年1月15日6 2009年1月16日

2日離れているレコードを取得する方法を教えてください。 最終結果セットは1〜3行目、および5〜6行目です。 ありがとうございます。

7 Answer


1


SELECT l。* FROM Table1 l内部結合Table1 r ON DATEDIFF(d、l.Date_Created、r.Date_Created)= 2 AND r.Date_Created =(SELECT TOP 1 * FROM Table1からWHERE日付を作成> l。日付を作成>日付を作成


0


これでうまくいくでしょうか。

table1からt1.id、t2.idを選択します。t1 t2.date_createdにtable1 t2を結合します。


0


  • これはあなたに何をもたらしますか?

table1 t1、table1 t2からDISTINCT t1.id、t1.date_created、t2.id、t2.date_createdを選択します。 = 2 AND t1.id!= t2.id t1.idによる順序で。


0


私はそれをするためにプログラミングコードを使うことを提案するかもしれません。 行のグループ(別々のグループ)を集めたいです。 私はあなたが(あなたに戻って1セットの行を返すだろう)単一のクエリを使用してこれを解決できるとは思わない。


0


1から2の間のabs(キャスト(t1.Date_Created  -  t2.Date_Created)でキャスト)でTable1 t1内部結合Table1 t2から異なるt1。*を選択


0


N日以内の行を取得したい場合は、これを試すことができます。

table1 t1、table1 t2からt1.date_created、t2.date_createdを選択します。ここで、t1.id <> t2.id、およびt2.date_created-t1.date_createdは0からNの間です。

たとえば、2日以内に含まれる行を取得する場合は、次のように入力します。

table1 t1、table1.t2からt1.date_created、t2.date_createdを選択します。ここで、t1.id <> t2.idおよびt2.date_created-t1.date_createdは0から2の間です。

これが役に立つことを願っています…​.

よろしく、Srikrishna。


0


カーソルが最も速くなりますが、これを実行するSELECTクエリがあります。 2日ではなく "N日まで"の場合は、テーブルTwoを0からN-1までの整数のテーブルに置き換える必要があります(効率が悪くなります)。

私はあなたが望むものが完全に明確ではないと認めるでしょう、しかし私はあなたが全部で少なくとも2つの行を含みそしてその中で連続した行が最大で2日離れている行の範囲が欲しいと思います。 IDとともに日付が増えても、うまくいきます。

Two as(オフセット選択として0を選択、all select 1を選択)、r2(ID、Date_Created offset、Date_Created offset  -  dense_rank()over(Date_Created offsetによる順序)からrへ)開始としてのmin(ID)、drによるr2グループからの終了としてのmax(ID)、drによるmin(ID)<max(ID)の順序。