Os problemas com a utilização existem na cláusula de selecção do DB2
Tenho um pequeno problema em usar a instrução existe na cláusula de selecção. Tenho o ITEM e sub-item das tabelas e quero devolver a bandeira booleana se existir algum sub-item de dado Tipo:
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
No entanto, percebo a mensagem de erro:
erro: [IBM] [CLI Driver] [DB2] SQL0104N um token inesperado"." era encontrado a seguir".". Os tokens esperados podem incluir:",)". SQLSTATE=42601 SQLState: 42601 ErrorCode: -104
o exemplo é simplificado e os nomes das tabelas não são reais, é apenas um exemplo para pedir a sintaxe para a cláusula existe em DB2. Tanto quanto me lembro, não tive problemas em usar essa sintaxe no PostgreSQL ou Oracle...
0
Author: Danubian Sailor, 2014-07-21
1 answers
Coloque uma declaração case
à volta disto:
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;
7
Author: Gordon Linoff, 2014-07-21 11:42:11