(pl/sql Oracle )现在select出来是:上图这样 ,我要怎么把重复的数据合成一行,不是重复的在合成的一行后面显示出来。
显示后大概是这个样子 :
谢谢大佬们了 这是我的sql语句~
select
XT_INSTANCE.IID,
XT_INSTANCE.行政区名称,
XT_INSTANCE.年度,
UT_SP_CLASS_AREA_DTL.UNIT_NAME ,
ut_sp_dl_dict.dl_name,
ut_sp_class_area_dtl2.dl_value,
ut_sp_class_area_dtl2.dl_id
from XT_INSTANCE,UT_SP_CLASS_AREA_DTL,UT_SP_BUILD_PROJ_LAND,UT_SP_CLASS_AREA_DTL2,ut_sp_dl_dict,sys_landtype_dict where 1=1
and UT_SP_BUILD_PROJ_LAND.Iid=XT_INSTANCE.Iid
and UT_SP_BUILD_PROJ_LAND.iid=UT_SP_CLASS_AREA_DTL.iid
and UT_SP_CLASS_AREA_DTL.Iid=UT_SP_CLASS_AREA_DTL2.Iid
and ut_sp_dl_dict.type=2
and ut_sp_dl_dict.dl_id=ut_sp_dl_dict.dl_id
and ut_sp_dl_dict.dl_id=sys_landtype_dict.pro_code
and sys_landtype_dict.pro_code=ut_sp_class_area_dtl2.dl_id
注意,以下语句中的max的使用,保证了group by的语法正确,同时不会造成结果的错误
select
XT_INSTANCE.IID,
XT_INSTANCE.行政区名称,
XT_INSTANCE.年度,
UT_SP_CLASS_AREA_DTL.UNIT_NAME ,
max(ut_sp_dl_dict.dl_name) as dl_name,
max(ut_sp_class_area_dtl2.dl_value) as dl_value,
max(ut_sp_class_area_dtl2.dl_id) as dl_id
from XT_INSTANCE,UT_SP_CLASS_AREA_DTL,UT_SP_BUILD_PROJ_LAND,UT_SP_CLASS_AREA_DTL2,ut_sp_dl_dict,sys_landtype_dict where 1=1
and UT_SP_BUILD_PROJ_LAND.Iid=XT_INSTANCE.Iid
and UT_SP_BUILD_PROJ_LAND.iid=UT_SP_CLASS_AREA_DTL.iid
and UT_SP_CLASS_AREA_DTL.Iid=UT_SP_CLASS_AREA_DTL2.Iid
and ut_sp_dl_dict.type=2
and ut_sp_dl_dict.dl_id=ut_sp_dl_dict.dl_id
and ut_sp_dl_dict.dl_id=sys_landtype_dict.pro_code
and sys_landtype_dict.pro_code=ut_sp_class_area_dtl2.dl_id
GROUP BY XT_INSTANCE.IID, XT_INSTANCE.行政区名称, XT_INSTANCE.年度, UT_SP_CLASS_AREA_DTL.UNIT_NAME
可以尝试一下oracle的wm_contact()函数。
拿去试试吧
select
XT_INSTANCE.IID,
XT_INSTANCE.行政区名称,
XT_INSTANCE.年度,
UT_SP_CLASS_AREA_DTL.UNIT_NAME ,
ut_sp_dl_dict.dl_name,
ut_sp_class_area_dtl2.dl_value,
ut_sp_class_area_dtl2.dl_id
wm_concat(ut_sp_dl_dict.dl_name || ' '|| ut_sp_class_area_dtl2.dl_value ||' '|| ut_sp_class_area_dtl2.dl_id)
from XT_INSTANCE,UT_SP_CLASS_AREA_DTL,UT_SP_BUILD_PROJ_LAND,UT_SP_CLASS_AREA_DTL2,ut_sp_dl_dict,sys_landtype_dict where 1=1
and UT_SP_BUILD_PROJ_LAND.Iid=XT_INSTANCE.Iid
and UT_SP_BUILD_PROJ_LAND.iid=UT_SP_CLASS_AREA_DTL.iid
and UT_SP_CLASS_AREA_DTL.Iid=UT_SP_CLASS_AREA_DTL2.Iid
and ut_sp_dl_dict.type=2
and ut_sp_dl_dict.dl_id=ut_sp_dl_dict.dl_id
and ut_sp_dl_dict.dl_id=sys_landtype_dict.pro_code
and sys_landtype_dict.pro_code=ut_sp_class_area_dtl2.dl_id
GROUP BY XT_INSTANCE.IID, XT_INSTANCE.行政区名称, XT_INSTANCE.年度, UT_SP_CLASS_AREA_DTL.UNIT_NAME
完全一样,用distinct不行吗?