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 回答