where 子句中的 case 语句,我的查询有什么问题?
谁能告诉我我的代码怎么了?
SELECT
*
FROM
TABLE.NAME
WHERE
TICKET_GROUP IN
CASE WHEN ticket_created_at <= CAST('2022-04-01' AS DATE)
THEN (1500003613882, 360013692813, 114095263234)
ELSE (1500001610322, 360005931333, 1260811380530)
END
我有这个错误
第8:20行:不匹配的输入'in in'。期待:'和',',“除”,“ fetch”,“ group”,“ have”,“ betsect”,“ limit”,“ offset”,“ offse”,“ or''',''','',''','''',&lt; eof&gt;
我尝试将其更改为“ =”,而不是IN,但它没有起作用。
Can anyone tell me what's wrong with my code?
SELECT
*
FROM
TABLE.NAME
WHERE
TICKET_GROUP IN
CASE WHEN ticket_created_at <= CAST('2022-04-01' AS DATE)
THEN (1500003613882, 360013692813, 114095263234)
ELSE (1500001610322, 360005931333, 1260811380530)
END
I get this error
line 8:20: mismatched input 'IN'. Expecting: 'AND', 'EXCEPT', 'FETCH', 'GROUP', 'HAVING', 'INTERSECT', 'LIMIT', 'OFFSET', 'OR', 'ORDER', 'UNION', <EOF>
I tried changing it to '=' instead of IN but it didn't worked.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
案例
表达式总是产生A value ,从来都不是其他表达式。因此,您必须构建其中
条款更多类似:此外,我们可以使用
nullif()
为了简化case
在select> Select
子句中的表达式中的表达式:A
CASE
expression always produces a value, never another expression. Therefore you must structure theWHERE
clause more like this:Additionally, we can use
NULLIF()
to simplify theCASE
expression in theSELECT
clause like so:如果要在值中“动态”定义
,则可以在
case>案例> case> case> case>语句的结果表达式中移动ticket_group:
或者只需使用布尔值具有
或
和和
的逻辑:If you want to "dynamically" define the
IN
values then you can moveTICKET_GROUP IN
inside thecase
statement's result expressions:Or just use the boolean logic with
OR
andAND
: