我需要提取业务=IT和日期>= 2021-07-01和日期<= 2022-09-10的数据
任何一个条件满足我需要拉修改器:G11、G7服务:物理手术
Technology modifier Date service
IT. 95. 2021-07-01. Phys
Cse. G5. 2021-09-09. Tec
Mech. GT. 2022-08-07. Tec
IT. G11. 2022-09-06. Tec
IT. G7. 2022-08-07. Oper
IT. GR. 2022-06-26. Tec
技术修改器日期服务IT。95. 2021年7月1日。Phy IT G11. 2022-09-06 Tec IT. G7,2022-08-07。Oper
下面是我尝试过的:
其中技术= 'IT' AND(日期在'2021-07-01'和'2022-09- 10'之间)OR(修改符IN('G11','G7'))OR(服务IN('phys','oper'))
这里的问题是,它也在拉动所有其他技术。我如何修改,以便它拉正确的信息。
2条答案
按热度按时间toe950271#
试试这个:
bnl4lu3b2#
AND
比OR
具有更高的运算符优先级如果您希望OR
被视为具有更高的运算符优先级,则将OR
条件括在括号中:Date
是保留字,不能用作无引号的标识符。如果你想使用它作为一个标识符(请不要,它的坏习惯),那么你将需要使用一个引用的标识符(和正确的情况)。'2021-07-01'
不是日期,它是一个字符串文字,碰巧看起来像一个日期。假设你的Date
列的数据类型是DATE
,那么Oracle会尝试将你的字符串隐式转换为DATE
,但这依赖于NLS_DATE_FORMAT
会话参数,任何用户都可以随时在自己的会话中更改该参数,所以你不应该依赖隐式转换。相反,使用DATE
文字或显式使用TO_DATE
函数,并使用格式模型来执行转换。