Mapper.xml传入List返回List写法

Mapper

    List<SalesDataBoardResponse> selectList(@Param("list") List<String> month,String code);

XML


    <select id="selectList"  resultType="com.etl.appeal.application.response.SalesDataBoardResponse">
        select
            'DM' as dm_position_code,
            dm_name,
           <--round四舍五入函数,cast转换类型-->
            round(sum(cast("target_value" as numeric)),0) as target_value,
            round(sum(cast("actual_value" as numeric)),0) as actual_value ,
            round(sum(cast("ly_amount" as numeric)),0) as ly_amount,
            m.brand,
            n.hospital
        from
        ims_pm_saleslist,
        <--concat_ws拼接字符-->
        (select concat_ws('/',a,b) brand from (
            select count(*) a from (
                select distinct brand_name from ims_pm_saleslist group by brand_name,month,dm_position_code,actual_value
                having  month =  any ( array<foreach collection="list" item="month" open="[" close="]" separator=",">#{month}  </foreach>) and
                    dm_position_code = #{code} and actual_value &lt;&gt; '0') as o
            )c,
        (select count(*) b from (
            select distinct brand_name from ims_pm_saleslist group by brand_name,month,dm_position_code
            having month =  any ( array<foreach collection="list" item="month" open="[" close="]" separator=",">#{month}  </foreach>) and
                dm_position_code =#{code}) as o
            )d
        ) as m
        ,(select concat_ws('/',a,b) hospital from (
            select count(1) a from (
                select distinct customer_id from ims_pm_saleslist group by customer_id,month,dm_position_code,actual_value
                having month =  any ( array<foreach collection="list" item="month" open="[" close="]" separator=",">#{month}  </foreach>) and
                    dm_position_code =#{code} and actual_value &lt;&gt; '0') as o
            )c,
        (select count(1) b from (
            select distinct customer_id from ims_pm_saleslist group by customer_id,month,dm_position_code
            having month =  any ( array<foreach collection="list" item="month" open="[" close="]" separator=",">#{month}  </foreach>) and
                dm_position_code =#{code} ) as o
            )d
        )as n
        group by dm_position_code,dm_name,month,m.brand,n.hospital
        having
<!--        month = '${month}' -->
        month =  any (
            array<foreach collection="list" item="month" open="[" close="]" separator=",">#{month}  </foreach>
        )
<!--   可替换成 month in
        <foreach collection="list" item="month" open="(" close=")" separator=",">  #{month} </foreach> -->
        and dm_position_code =#{code}

    </select>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值