在sqlserver中,使用开窗函数统计分组后的数据。
发现mybatis中的执行结果中g_num字段与在数据库中的结果不同,用mybatis在控制台中打印的sql语句在数据库运行,结果和在mybatis中的结果不同。
<select id="getFiterList" resultType="com.data.service.core.vo.AmzSalordbyodVo">
SELECT FID,COUNT(FID) OVER (PARTITION BY
<foreach collection="list" item="item" separator=",">
${item}
</foreach> )
as G_NUM, F_LOGNUMBER FROM T_WVRD_AMZ_SalOrdByOD
</select>
原因
传递的分组入参条件是动态的,使用的#{}传递,这样sql会预编译,所以不知道具体的分组条件,会导致统计的结果不同
修改
将#{}改成${}即可
#{}可以防止sql注入,一般在where中使用
动态输入字段表名,字段等可以使用${}