0

私は2つのテーブルを持っています:

TotalTimeTable
(date date,time time)

FinalListA
(date date, time time, A int, B int)

次のクエリを実行しています。

SELECT t1.date,
       t1.time,
       max(t2.time)
FROM TotalTimeTable t1,
     FinalListA t2
WHERE t2.date=t1.date
  AND t2.time <= t1.time
GROUP BY t1.date,
         t1.time
ORDER BY t1.date,
         t1.time

同じクエリで time = "max(t2.time)" の FinalListA から A と B を取り出す方法はありますか?

合計時間テーブル:

date        time    
2006-01-01  9:30:01     
2006-01-01  9:30:02 
2006-01-01  9:30:03
2006-01-01  9:30:04
2006-01-01  9:30:05 
2006-01-01  9:30:06

FinalListA:

date        time     A B
2006-01-01  9:28:01  1 4
2006-01-01  9:30:02  2 3
2006-01-01  9:30:04  4 7
2006-01-01  9:30:07  6 4
2006-01-01  9:30:10  8 9
2006-01-01  9:30:11  1 2

期待される結果は次のとおりです。

date        time     A B
2006-01-01  9:30:01  1 4
2006-01-01  9:30:02  2 3
2006-01-01  9:30:03  2 3
2006-01-01  9:30:04  4 7
2006-01-01  9:30:05  4 7
2006-01-01  9:30:06  4 7

時間は TotalTimeTable FinalListA.time からのものです。結果に含まれる必要はありません。

4

3 に答える 3

0

クロス適用の使用:

SELECT t1.date
   , t1.time
   , t2.time
   , t2.A
   , t2.B
FROM TotalTimeTable t1
CROSS APPLY (
 SELECT TOP(1)
  T2.time
 , T2.A
 , T2.B
FROM FinalListA t2
WHERE T2.date = T1.date
AND T2.time <= t1.time
ORDER BY T2.time DESC
) AS T2
ORDER BY t1.date,
     t1.time
于 2013-04-17T10:03:06.190 に答える