在DB2上的SELECT子句中使用EXISTS的问题

Dan*_*lor 0 sql db2 exists

我在SELECT子句中使用EXISTS语句有一点问题.我有表ITEM和SUBITEM,如果存在任何给定类型的子项,我想返回布尔标志:

SELECT item.id, item.f1, item.f2, item.f3,
    EXISTS(select sub.id from schema.subitem sub where sub.item_id = item.id
      AND type='standard') as has_standard
    FROM schema.item item
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误消息:

错误:[IBM] [CLI驱动程序] [DB2] SQL0104N意外的令牌"." 被发现在"."之后.预期的代币可能包括:",)".SQLSTATE = 42601 SQLState:42601 ErrorCode:-104

这个例子是简化的,表名不是真的,这只是一个在DB2上请求EXISTS子句语法的例子.据我所知,在PostgreSQL或Oracle上使用该语法没有问题...

Gor*_*off 8

case它周围的语句:

SELECT item.id, item.f1, item.f2, item.f3,
       (case when EXISTS (select sub.id
                          from schema.subitem sub
                          where sub.item_id = item.id AND type='standard'
                         )
             then 1 else 0
        end) as has_standard
FROM schema.item item;
Run Code Online (Sandbox Code Playgroud)