Где пункт - между ошибка условия

Я пытаюсь работать над своим запросом ниже, у меня большая часть его правильная, но по какой-то причине мое условие МЕЖДУ не работает при попытке отфильтровать набор данных... оно вообще его не фильтрует. Может ли кто-нибудь взглянуть на мой код ниже и сообщить мне, что я делаю неправильно... или, может быть, даже предложить альтернативный способ фильтрации записей с июля по конец сентября?

SELECT  A.[Name] AS ResourceName,
    A.[ID] AS ResourceID,
    CONVERT(VARCHAR(10),A.[STRT_Date],101) AS StartDate,
    CONVERT(VARCHAR(10),A.[END_Date],101) AS EndDate,
    CASE WHEN A.[END_Date] > A.[STRT_Date] THEN C2.[DY_OF_CAL_NUM] - C1.[DY_OF_CAL_NUM] 
         WHEN A.[END_Date] IS NULL and A.[STRT_Date] IS NOT NULL THEN C3.[DY_OF_CAL_NUM] - C1.[DY_OF_CAL_NUM]
         WHEN A.[END_Date] = A.[STRT_Date] THEN 1
    END AS AgeCalendar
FROM    [Report] AS A       
    INNER JOIN [Dim] AS B 
    ON A.[ID] = B.[ID]  
    LEFT JOIN [dbo].[DT_DIM] AS C1 
    ON CAST(A.STRT_Date AS DATE) = C1.[CAL_DT]      
    LEFT JOIN [dbo].[DT_DIM] AS C2 
    ON CAST(A.END_Date AS DATE) = C2.[CAL_DT]       
    LEFT JOIN [dbo].[DT_DIM] AS C3 
    ON CAST(GETDATE() AS DATE) = C3.[CAL_DT]
WHERE   1 = 1
AND     A.[STRT_Date] BETWEEN '07/01/2016' AND '09/30/2016'
AND     A.[Name] like '%S-Info%'
OR      A.[Name] like '%S-Dep%'
OR      A.[Name] like '%S-Can%' 
OR      A.[Name] like '%S-Doc%'

person smul86    schedule 17.10.2016    source источник


Ответы (1)


Оберните операторы Or операторами ():

WHERE A.[STRT_Date] BETWEEN '07/01/2016' AND '09/30/2016'
AND (A.[Name] like '%S-Info%'
     OR A.[Name] like '%S-Dep%'
     OR A.[Name] like '%S-Can%' 
     OR A.[Name] like '%S-Doc%')

Что в настоящее время происходит, так это то, что если запись имеет Name, похожую на '%S-Doc%', даже если она не находится между датами, она будет выбрана. Оборачивая все варианты допустимых Name, вы говорите, что они должны быть между датами и «одним из следующих условий»

person Gilad Green    schedule 17.10.2016
comment
Спасибо... Я знал, что это должно быть что-то маленькое. Ценить вас! - person smul86; 18.10.2016