Oracle SQL满足条件时返回多值的实现方案(不可修改表)
在Oracle SQL中获取ITEM对应多个TYPE值的解决方案
场景1:返回多行独立结果
不需要使用CASE语句,直接通过WHERE条件过滤即可。你的表中apple本身就对应两行TYPE数据,直接查询就能得到两个独立结果:
SELECT TYPE FROM ITEMS WHERE ITEM = 'apple';
执行结果:
fruit
edible
场景2:返回单行拼接后的结果
如果需要将多个TYPE值合并到同一行(比如用逗号分隔),可以使用Oracle内置的LISTAGG聚合函数,无需创建或修改现有表:
SELECT LISTAGG(TYPE, ', ') WITHIN GROUP (ORDER BY TYPE) AS apple_types FROM ITEMS WHERE ITEM = 'apple';
执行结果:
fruit, edible
关于CASE语句的问题
CASE语句是单行内的条件判断逻辑,只能针对当前行返回单个值,无法从多行数据中提取并返回多个结果,这就是你之前只能得到单个值的原因。
内容的提问来源于stack exchange,提问作者Ananya Sarkar
相关产品推荐
相关产品推荐

