this is my query:
SELECT TOP 10000 [REASON_TEXT]
,[PS1]
,[PS2]
,[PS3]
,[PS4]
,[PS5]
FROM Samsung.[dbo].['NewLP']
where (
REASON_TEXT = 'Not'
or REASON_TEXT = 'In'
or REASON_TEXT = 'Back'
)
and PS1 = 'U'
and PS2 = 'U' or PS2 = ''
and PS3 = 'U' or PS3 = ''
and PS4 = 'U' or PS4 = ''
and PS5 = 'U' or PS5 = ''
所以where子句应该有这三个值,PS1应该有' U'价值和PS2应该有' U'或者它可以是空的,以及PS的其他部分(PS3,PS4,PS5)。
我得到的结果,前两个PS是正确的,但开始第三个'和' ,PS3就像条件不知何故被忽略了?!?
结果如下:
我需要返回那些选定的(围绕它们的红色矩形)。 哪部分代码是错误的。 我已经尝试了各种方式,但没有任何东西返回我需要的结果。 我也为我的病情尝试了这个代码,但没有显示出来。
and PS1 = 'U'
and PS2 <> 'P'
and PS3 <> 'P'
and PS4 <> 'P'
and PS5 <> 'P'
感谢任何帮助。
答案 0 :(得分:1)
它是你将“和”和“或”链接在一起的方式,基本上所有在你的陈述中都需要的是PS5 =''(或PS5 ='')。
你需要的是将OR语句分组到括号中,如下所示..
and PS1 = 'U'
and (PS2 = 'U' or PS2 = '')
and (PS3 = 'U' or PS3 = '')
and (PS4 = 'U' or PS4 = '')
and (PS5 = 'U' or PS5 = '')
答案 1 :(得分:1)
从previous question获取REASON_TEXT
值并查看您的预期结果时会想到:
SELECT TOP 10000 [REASON_TEXT]
,[PS1]
,[PS2]
,[PS3]
,[PS4]
,[PS5]
FROM Samsung.[dbo].['NewLP']
WHERE (
REASON_TEXT = 'Parts Not available (ASC)'
or REASON_TEXT = 'Parts In Transit (Samsung)'
or REASON_TEXT = 'Parts Back Ordered (Samsung)'
)
and PS1 = 'U'
and ( PS2 = 'U' or PS2 IS NULL )
and ( PS3 = 'U' or PS3 IS NULL )
and ( PS4 = 'U' or PS4 IS NULL )
and ( PS5 = 'U' or PS5 IS NULL )
即,您需要检查空值而不是空字符串。