1. 程式人生 > >mybatis 動態行轉列

mybatis 動態行轉列

 

SELECT user_name ,
  MAX(CASE course WHEN '數學' THEN score END ) 數學,
  MAX(CASE course WHEN '語文' THEN score END ) 語文,
  MAX(CASE course WHEN '英語' THEN score END ) 英語
FROM test_tb_grade
GROUP BY USER_NAME;

在 mybatis 中實現 動態行轉列

<select id="list" resultType="java.util.HashMap">
  SELECT user_name ,
    <if test="courses != null">
        <foreach collection="courses " item="item" separator=",">
        MAX(CASE course WHEN #{item} THEN score END ) "${item}"
        </foreach>
    </if>
  FROM test_tb_grade
  GROUP BY USER_NAME;
</select>