首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-00923:预期-得到CLOB

ORA-00923:预期-得到CLOB
EN

Stack Overflow用户
提问于 2015-08-20 15:34:09
回答 1查看 130关注 0票数 0

我有一个使用GROUP BY的查询,所以我需要将所选的项放入GROUP BY或聚合函数中。当我将它们放到GROUP BY中时,t2.category会在标题中抛出错误。我尝试在CASE/WHEN语句中添加一个聚合函数,而不是将t2.category放在GROUP BY中,但是我得到了一个invalid identifier错误。t2.category的一个例子可能是“服务器可靠性-由于数据库丢失而导致的连接问题”。我怎样才能消除这个错误?

代码语言:javascript
复制
SELECT
 msr._id,

 CASE ans.question_id WHEN '767' THEN ans.category END "767",
 CASE ans.question_id WHEN '768' THEN ans.category END "768"

FROM table1 t1
LEFT OUTER JOIN table2 t2
ON t1._id = t2._id

WHERE t2.question_id in (767,768) AND t2.assigned_to not in ('Smith, John')
 AND t1.request_type_id in (288,289) and t1.status_id not in (0, 11);

GROUP BY t1._id, t2.question_id, t2.category
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-20 16:58:25

除了只使用CLOB值的前4000个字符(这可能是不可接受的)之外,我看到绕过CLOB (包括你不能按他们分组)的唯一方法是多次连接到第二个表:

代码语言:javascript
复制
SELECT
 msr.id,
 ans_767.category AS "767",
 ans_768.category AS "768"
FROM msr
LEFT OUTER JOIN ans ans_767
ON ans_767.id = msr.id
AND ans_767.question_id = 767
AND ans_767.assigned_to not in ('Smith, John')
LEFT OUTER JOIN ans ans_768
ON ans_768.id = msr.id
AND ans_768.question_id = 768
AND ans_768.assigned_to not in ('Smith, John')
WHERE msr.request_type_id in (288,289)
AND msr.status_id not in (0, 11);

        ID 767                  768                
---------- -------------------- --------------------
         1 back                 dev
         2                      dev

它们都是左联接,但意味着只返回一行,因此不必折叠版本从两行获得的值。

我不得不将question_id过滤器移到每个ON子句中;但我也移动了assigned_to过滤器,因为它在where子句中将外部联接转换为内部联接。

对于两个问题is来说,这是很难看的,但却是可以忍受的,但是在维护和可读性方面没有很好的扩展。

演示,使用您上一个问题中的值;以及您的原始代码(某种程度上;编辑了一点) 失败

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32122457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档