2017-12-05 17 views
-2

私はSQL Serverを使用していますが、キューテーブルにはprocess_dateという列があり、usersテーブルにはprocess_dateという列があります。 2つのテーブルの間。 process_dateに応じて1つのキューで処理されたすべてのユーザーを取得したい(私はqueue_idを持っていて、そのキューで処理されたすべてのユーザーを返す) これを行うにはどうすればよいのですか?別のテーブルの列の日付の間にあるすべてのレコードを取得する方法

update:process_dateは日時であり、キューとユーザーには一致しません。そのため、以前のキューと現在のキューのプロセス日付を取得し、次に処理されたユーザーを取得する必要がありましたその日付範囲

+0

テーブルにいくつかのサンプル行を表示できますか?そしてあなたの望む出力は? – Vashi

答えて

0

process_dateフィールドは日付時刻なので、私は参加していません私はキューから前のprocess_dateを選択し、現在のキューのprocess_dateを選択してから、これらの2つの日付の間にprocess_dateを持つユーザーを選択します。

0

同様に、どのような答えでも動作するように細かい部分は、同様に「詳細が薄い」でしょう。例えば

遅延が何らかの形である場合、おそらく小さな時間範囲が必要な場合があります。

select * from users u 
inner join queue q on u.process_date between q.process_date and dateadd(minute,1,q.process_date) 
1

これはというqueue_id 1

のために処理されるすべてのユーザーが返されます。この

SELECT 
    * 
    FROM Users 
     WHERE EXISTS 
     (
      SELECT 
       1 
       FROM [Queue] 
        WHERE [Queue].process_date = Users.process_date 
        AND [Queue].QueueId = 1 
     ) 

を試してみてください。レコードを取得するためにいくつかの日付に基づいてテーブルを結合することは推奨されません を。可能であれば、ユーザーの表にキューIDを追加し、キュー表との外部キー制約を作成する必要があります。ミリ秒単位での時間変化が上記の範囲内で一致しないため、各ユーザーのキューIDを更新してください

関連する問題