1

日付と時刻を別々のフィールドに格納するデータベースがあります。それぞれの発生日時から + および - 90 分以内に発生したすべてのレコードを選択する必要があります。

私はそれをやってのけるために必要なフォーマットですべてを得ることができます

SELECT UFV1.USR_DATE
,UFV1.USR_TIME
,LEFT(CAST(DATEADD(minute, -90, UFV1.USR_TIME) AS TIME),8) AS MIN_TIME
,LEFT(CAST(DATEADD(minute, +90, UFV1.USR_TIME) AS TIME),8)AS MAX_TIME
FROM USR_Y_FACILITY_VISIT UFV1

WHERE UFV1.MASTER_CUSTOMER_ID = '2'

ORDER BY UFV1.USR_DATE, UFV1.USR_TIME

私が立ち往生しているのは、この情報(基本的には各行の最小/最大)を取得し、それに基づいて同じテーブル内のすべての情報を選択するクエリを作成する必要があることです。助けてくれてありがとう、私は次にどこへ行けばいいのか完全に困惑しています。

4

2 に答える 2

0

テーブルのキー フィールドを、対応する GROUP BY 句と共にクエリに追加します。次に、そのクエリに結合されたデータ テーブルを次の形式で太陽クエリとしてクエリします。

SELECT * 
FROM T
JOIN ( SELECT * ... ) U 
     ON U.key = T.key 
    AND T.dateTime BETWEENU.MinDateTime AND U.MaxDateTime
于 2013-03-05T16:43:49.833 に答える
0

私が質問を正しく理解した場合、このリクエストはあなたにとって必要です

SELECT *
FROM USR_Y_FACILITY_VISIT UFV1
WHERE EXISTS (
              SELECT 1
              FROM USR_Y_FACILITY_VISIT UFV2
              WHERE UFV2.MASTER_CUSTOMER_ID = '2'
                AND UFV1.USR_DATE = UFV2.USR_DATE
                AND UFV1.USR_TIME BETWEEN CAST(DATEADD(minute, -90, UFV2.USR_TIME) AS time) 
                                    AND CAST(DATEADD(minute, 90, UFV2.USR_TIME) AS time) 
              )
于 2013-03-05T20:15:10.860 に答える