-4

2 つのテーブルがあり、両方のテーブルが 1 つの日付列で構成されているとします。

OUTTime
12:05:40
12:08:30
12:20:40

および他のテーブルで構成されています

INTime
12:10:35
12:12:23
12:16:40
12:30:11

ここで、12:08:30 と 12:10:35 のような 2 つのテーブル間の最小時間差を持つ行が必要で、OUT と IN が得られます。同様に、12:20:40 と 12:30:11 は、OUTTime 12:05:40 を削除し、INTime から 12:12:35 と 12:16:40 を削除することで、ここで別の行を提供します。これにより、適切な OUtTime と InTime が得られます。

このデータを取得するためにループする方法はありますか?

4

2 に答える 2

0

一致する InTimes と OutTimes を取得し、最も近いものだけを取得する場合は、これを試してください。

設定

CREATE TABLE #OUTTime
(
    [Time] Time
)

INSERT INTO #OUTTime
    VALUES
        ('12:05:40'),
        ('12:08:30'),
        ('12:20:40')


CREATE TABLE #InTime
(
    [Time] Time
)

INSERT INTO #InTime
    VALUES
        ('12:10:35'),
        ('12:12:23'),
        ('12:16:40'),
        ('12:30:11')

今クエリ:

;WITH CTE
As
(
    SELECT O.Time AS outTime, (SELECT MIN([Time]) FROM #InTime I WHERE I.[time] > O.[Time])  AS InTime
    FROM #OUTTime O
)
SELECT MAX(OutTime) As OutTime, InTime
FROM CTE
GROUP BY InTime

結果

OutTime             InTime
12:08:30.0000000    12:10:35.0000000
12:20:40.0000000    12:30:11.0000000
于 2013-09-20T14:54:27.853 に答える