<select id="selectScoreInfo" resultType="java.util.Map" parameterType="java.util.Map">
select DZShare.T_Y_SBBHDEVICE_SITE.* ,
ROUND(DZShare.T_Y_SCORE.actual_score ,2) as actual_score ,
ROUND(DZShare.T_Y_SCORE.total_score ,2) as total_score,
DZShare.T_Y_SCORE.time ,
DZShare.T_Y_SCORE.id as scoreId ,
DZShare.T_Y_SCORE.status ,
DZShare.T_Y_TYPE_ENGINEERING_D.engineering_name ,
(select DZShare.T_Y_SCORE.total_score - sum( DZShare.T_Y_SCORE_DETAILS.score) from
DZShare.T_Y_SCORE_DETAILS where DZShare.T_Y_SCORE_DETAILS.score_id = DZShare.T_Y_SCORE.id)
as originalScore
from DZShare.T_Y_SBBHDEVICE_SITE , DZShare.T_Y_SCORE , DZShare.T_Y_TYPE_ENGINEERING_D
where 1=1
and DZShare.T_Y_SBBHDEVICE_SITE.id = DZShare.T_Y_SCORE.sbbhdevice_id
and DZShare.T_Y_TYPE_ENGINEERING_D.id = DZShare.T_Y_SBBHDEVICE_SITE.engineering_id
<if test="country != null and country != '' ">
and DZShare.T_Y_SBBHDEVICE_SITE.country in (
<foreach collection="country" index="index" item="item" separator="," >
#{item}
</foreach>
)
</if>
<if test="workSiteName != null and workSiteName != '' ">
and DZShare.T_Y_SBBHDEVICE_SITE.work_site_name like '%${workSiteName}%'
</if>
<if test="time != null and time != '' ">
and DZShare.T_Y_SCORE.time = '${time}'
</if>
<if test="engineering_code != null and engineering_code != '' ">
and DZShare.T_Y_SBBHDEVICE_SITE.engineering_id in (
select id from DZShare.T_Y_TYPE_ENGINEERING_D where
DZShare.T_Y_TYPE_ENGINEERING_D.engineering_code in (
<foreach collection="engineering_code" index="index" item="item" separator=",">
#{item}
</foreach>
)
)
</if>
<if test="status != null">
and DZShare.T_Y_SCORE.status = #{status}
</if>
order by DZShare.T_Y_SCORE.actual_score desc nulls last
</select>
在统计计分时, 排序后,null值会默认排在最前面。
这是需要:
**
order by table.caloum desc nulls last 或者 nulls first
**