SQL Where 子句未返回正确结果
SQL Where Clause Not Returning Correct Results
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 子句 right(left([VARIABLE1)],4),2) = 'RI'
不起作用,因为我得到的结果是其他两个字符串。
这个查询在我添加最后一个 where 子句条件之前有效
and ([VARIABLE2] IN(
'String1',
'String2',
'String3',
'String4',
'String5',
'String6',
))
现在我补充说它不起作用。有任何想法吗?
我猜你的 or 子句有一些括号问题(其中一个不包含在 WHERE right(left([VARIABLE1)],4),2) = 'RI'
之后的 AND
部分
尝试
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')
)
尝试将你的陈述分成不同的行;你可能打算这样做:
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'))
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 子句 right(left([VARIABLE1)],4),2) = 'RI'
不起作用,因为我得到的结果是其他两个字符串。
这个查询在我添加最后一个 where 子句条件之前有效
and ([VARIABLE2] IN(
'String1',
'String2',
'String3',
'String4',
'String5',
'String6',
))
现在我补充说它不起作用。有任何想法吗?
我猜你的 or 子句有一些括号问题(其中一个不包含在 WHERE right(left([VARIABLE1)],4),2) = 'RI'
AND
部分
尝试
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')
)
尝试将你的陈述分成不同的行;你可能打算这样做:
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'))