我需要运行一个根据时间和日期返回数据的查询。
数据将匹配数值
以下是我尝试过但返回的数据没有考虑数值
SELECT
I3TimeStampGMT, DNIS, AssignedWorkGroup, LocalName, RemoteNumber,
CallDurationSeconds
FROM
CIC_Prod.dbo.calldetail_viw
WHERE
(I3TimeStampGMT > '2017-12-01'
AND I3TimeStampGMT <= DATEADD(day,1,'2017-12-05')
AND (DATEPART(HH,I3TimeStampGMT) IN (18, 07)
OR (DATEPART(HH,I3TimeStampGMT) = 17 AND DATEPART(MI,I3TimeStampGMT) >= 00)
OR (DATEPART(HH,I3TimeStampGMT) = 08 AND DATEPART(MI,I3TimeStampGMT) <= 59)
)
AND DATEPART(dw,I3TimeStampGMT) >= 2 AND DATEPART(dw,I3TimeStampGMT) <= 6
--sun(1)-mon(2)-tue(3)-wed(4)-thu(5)-fri(6)-sat(7)
)
OR I3TimeStampGMT > '2017-12-01' AND I3TimeStampGMT <= DATEADD(day,1,'2017-12-05')
and (
DATEPART(HH,I3TimeStampGMT) IN (18, 07)
OR (DATEPART(HH,I3TimeStampGMT) = 17 AND DATEPART(MI,I3TimeStampGMT) >= 00)
OR (DATEPART(HH,I3TimeStampGMT) = 08 AND DATEPART(MI,I3TimeStampGMT) <= 59)
)
AND DATEPART(dw,I3TimeStampGMT) >= 7 AND DATEPART(dw,I3TimeStampGMT) <= 7
AND
LineId = 'SIP-100-UK'
AND(
DNIS = '4910045'
OR
DNIS = '4910044'
OR
DNIS = '4910043'
OR
DNIS = '4910025'
OR
DNIS = '4910024'
OR
DNIS = '4910023'
OR
DNIS = '4910021'
OR
DNIS = '4910026'
OR
DNIS = '4910019'
OR
DNIS = '4910022'
OR
DNIS = '4910020'
)
答案 0 :(得分:0)
您的过滤器是使用AND
和OR
制作的,如果OR
中的某个条件为真,其余条件应为true
或false
,则没关系。
为了考虑数字值,应该将AND
添加到之前的条件中,因此您需要另外一对括号,我用--<<<-----
证明:
SELECT
I3TimeStampGMT, DNIS, AssignedWorkGroup, LocalName, RemoteNumber,
CallDurationSeconds
FROM
CIC_Prod.dbo.calldetail_viw
WHERE
( --<<<------------------------------------------------------------------------------
(I3TimeStampGMT > '2017-12-01'
AND I3TimeStampGMT <= DATEADD(day,1,'2017-12-05')
AND (DATEPART(HH,I3TimeStampGMT) IN (18, 07)
OR (DATEPART(HH,I3TimeStampGMT) = 17 AND DATEPART(MI,I3TimeStampGMT) >= 00)
OR (DATEPART(HH,I3TimeStampGMT) = 08 AND DATEPART(MI,I3TimeStampGMT) <= 59)
)
AND DATEPART(dw,I3TimeStampGMT) >= 2 AND DATEPART(dw,I3TimeStampGMT) <= 6
--sun(1)-mon(2)-tue(3)-wed(4)-thu(5)-fri(6)-sat(7)
)
OR I3TimeStampGMT > '2017-12-01' AND I3TimeStampGMT <= DATEADD(day,1,'2017-12-05')
and (
DATEPART(HH,I3TimeStampGMT) IN (18, 07)
OR (DATEPART(HH,I3TimeStampGMT) = 17 AND DATEPART(MI,I3TimeStampGMT) >= 00)
OR (DATEPART(HH,I3TimeStampGMT) = 08 AND DATEPART(MI,I3TimeStampGMT) <= 59)
)
AND DATEPART(dw,I3TimeStampGMT) >= 7 AND DATEPART(dw,I3TimeStampGMT) <= 7
)--<<<------------------------------------------------------------------------------
AND
LineId = 'SIP-100-UK'
AND(
DNIS = '4910045'
OR
DNIS = '4910044'
OR
DNIS = '4910043'
OR
DNIS = '4910025'
OR
DNIS = '4910024'
OR
DNIS = '4910023'
OR
DNIS = '4910021'
OR
DNIS = '4910026'
OR
DNIS = '4910019'
OR
DNIS = '4910022'
OR
DNIS = '4910020'
)