2016-10-11 2 views
0
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', 
)) 

мне пришлось изменить несколько вещей, чтобы быть более общим, но по каким-то причинам первый пункт, где, то right(left([VARIABLE1)],4),2) = 'RI' не работает, потому что я получаю обратно результаты, где это другое две символьные строки.SQL ИНЕКЕ Не Возвратившись Правильные результаты

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

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

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

ответ

0

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

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')) 
+0

Спасибо, это сработало! – SanomaJean

0

Думаю, вы просто есть некоторые проблемы скобка с вашими или пунктами (один из них не входит в 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') 
     ) 
Смежные вопросы