我有一个数据库,可以在不同的字段中存储日期和时间。我需要选择在每个发生的日期和时间的+和 - 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
我遇到困难的是我需要构建一个获取此信息的查询(基本上是每行的最小值/最大值),然后根据该信息选择同一表中的所有信息。谢谢你的帮助我完全不知道下一步该去哪里。
答案 0 :(得分:0)
将表的关键字段添加到给定的查询中,以及相应的GROUP BY子句。然后查询您的数据表joind到该查询作为此格式的sun-query:
SELECT *
FROM T
JOIN ( SELECT * ... ) U
ON U.key = T.key
AND T.dateTime BETWEENU.MinDateTime AND U.MaxDateTime
答案 1 :(得分: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)
)