Предложение SQL Where не возвращает правильные результаты

#sql #where

#sql #Предложение where

Вопрос:

 SELECT * FROM [dbo].[_5200_Sanoma] 
WHERE right(left([VARIABLE1)],4),2) = 'RI' 
and (
        ([Year] = '2014' and [Period] in('10','11','12'))
        or [Year] = '2015') 
        or  (
                [Year] = '2016' 
                and [Period] in('01','02','03','04','05','06','07','08')--,'09','10','11','12')
            )
and ([VARIABLE2] IN(
'String1',
'String2',
'String3',
'String4',
'String5',
'String6',
))
  

Мне пришлось изменить несколько вещей, чтобы быть более общими, но по какой-то причине первое предложение where, the right(left([VARIABLE1)],4),2) = 'RI' не работает, потому что я получаю результаты, где это две другие символьные строки.

Этот запрос работал до того, как я добавил последнее условие предложения where

    and ([VARIABLE2] IN(
    'String1',
    'String2',
    'String3',
    'String4',
    'String5',
    'String6',
    ))
  

Итак, теперь, когда я добавил, что это не работает. Есть идеи?

Ответ №1:

Попробуйте разделить ваши операторы на разные строки; вы, вероятно, хотели это сделать:

 SELECT * FROM [dbo].[_5200_Sanoma] 
WHERE right(left([VARIABLE1)],4),2) = 'RI' AND
(
    ([Year] = '2014' and [Period] in('10','11','12')) OR
    ([Year] = '2015') OR
    ([Year] = '2016' and [Period] in('01','02','03','04','05','06','07','08'))
)
and ([VARIABLE2] IN ('String1','String2','String3','String4','String5','String6'))
  

Ответ №2:

Думаю, у вас просто есть некоторые проблемы с скобками в ваших предложениях or (один из них не включен в AND часть после WHERE right(left([VARIABLE1)],4),2) = 'RI'

Попробуйте

     and (
            ([Year] = '2014' and [Period] in('10','11','12')) or 
             [Year] = '2015' or  
            ([Year] = '2016' and [Period] in('01','02','03','04','05','06','07','08')--,'09','10','11','12')
        )