当oracle clob类型不能和group by并用,但是需要去除多列重复

天大地大妈咪最大 提交于 2020-08-14 18:10:42


当oracle clob类型不能和groupby并用,但是需要去除多列重复,请不要急!

直接看SQL:

 

SELECT T.MEMBER,
				        T.HTEST,
				        T.ACCEPTDATE,
				        T.TASKMEMO,
				        T.ACCEPTER,
				        T.TASKID,
				        T.ACCEPTRESULT,
				        T.OVERHAULRESULT,
				        T.OVERHAULCONTENT,
				        T.EQUIPMENTID ,
				        T.TASKLEVEL,
				        T.LEADER,
				        T.TASKNAME,
				        T.BEGINDATE,
				        T.ENDDATE,
				        T.PIOCONTENT,
				        V.GUOLUNAME,V.FENLEINAME
				  		 FROM V_GL_6JI V,T_OVERHUALTASK_TASK T  
				    		WHERE T.EQUIPMENTID=V.FENLEIID  AND T.TASKID = 10000039104 GROUP BY  T.MEMBER,T.HTEST,
				        T.ACCEPTDATE,
				         T.TASKMEMO,        T.ACCEPTER,
				         T.TASKID,        T.ACCEPTRESULT,
				         T.OVERHAULRESULT,        T.OVERHAULCONTENT,
				         T.EQUIPMENTID ,        T.TASKLEVEL,
				         T.LEADER,        T.TASKNAME, T.BEGINDATE, T.ENDDATE,
				         T.PIOCONTENT,
				         V.GUOLUNAME,V.FENLEINAME

但是会报如下错

ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB

00932. 00000 -  "inconsistent datatypes: expected %s got%s"

*Cause:   

*Action:

行 19 列 89 出错

 

解决办法,不用group by

Sql如下:

       

SELECT T.MEMBER,
                                             T.HTEST,
                                             T.ACCEPTDATE,
                                             T.TASKMEMO,
                                             T.ACCEPTER,
                                             T.TASKID,
                                             T.ACCEPTRESULT,
                                             T.OVERHAULRESULT,
                                             T.OVERHAULCONTENT,
                                             T.EQUIPMENTID ,
                                             T.TASKLEVEL,
                                             T.LEADER,
                                             T.TASKNAME,
                                             T.BEGINDATE,
                                             T.ENDDATE,
                                             T.PIOCONTENT,
                (select v.FENLEINAME fromV_GL_6JI v where v.FENLEIID= T.EQUIPMENTID group by v.FENLEINAME) asFENLEINAME,
                (select v.GUOLUNAME fromV_GL_6JI v where v.FENLEIID= T.EQUIPMENTID group by v.GUOLUNAME) as GUOLUNAME
                                                      FROM T_OVERHUALTASK_TASK T 
                                                            WHERE   T.TASKID = 10000039104

 

办法虽然有点笨,但是可以解决问题


版权声明:本文为博主原创文章,未经博主允许不得转载。




标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!