1

編集: 問題の説明: 3 月の開始から 5 月末までのすべての SIIIS および SULLS データを選択します。

SIIIS の各「XFFF」について、SULLS の「XFFF」で一致するものを探します。ここで、SULLS の「Start_Time」は SIIIS の「Case_Create」の後であり、「Start_Time」と「Case_Create」の時間差は 3 時間未満です。時間差が最も小さい試合を選択

select 
si.XFFF xfff,     
DATEDIFF(hour, si.CASE_CREATE, su.START_TIME) diffInhours
from siiis si inner join sulls su on si.xfff= su.xfff
where
 ((si.CASE_CREATE BETWEEN '20130301' AND '20130531') and (su.START_TIME between '20130301'AND '20130531'))
 and 
 (su.START_TIME > si.CASE_CREATE) and 
 (DATEDIFF(hour, si.CASE_CREATE, su.START_TIME) < 3 and DATEDIFF(hour, si.CASE_CREATE, su.START_TIME) > 0)
4

2 に答える 2

0

このコードを試してください。基本的にはDATEDIFF(hour, si.CASE_CREATE, su.START_TIME)、昇順で注文し、最初の 1 を選択することになっています。テストされていないので、ロジックを説明しました。

SELECT TOP 1
si.num_phone Phone,
su.start_time sulstarrtTime ,
si.CASE_CREATE siStartTime,
DATEDIFF(hour, si.CASE_CREATE, su.START_TIME) diffInhours
from siiis si inner join sulls su on si.num_phone = su.num_phone
where
((si.CASE_CREATE BETWEEN '20130301' AND '20130531') and (su.START_TIME between '20130301'AND '20130531'))
and 
(su.START_TIME > si.CASE_CREATE) and 
(DATEDIFF(hour, si.CASE_CREATE, su.START_TIME) < 3 and DATEDIFF(hour, si.CASE_CREATE, su.START_TIME) > 0) 
order by DATEDIFF(hour, si.CASE_CREATE, su.START_TIME) ASC
于 2013-08-01T05:18:50.253 に答える