|
@@ -510,17 +510,39 @@
|
|
|
GROUP BY
|
|
|
a.id
|
|
|
|
|
|
- <!-- 合并 HAVING 子句 -->
|
|
|
+ <!-- 在 HAVING 子句中引用 selectStatus 别名 -->
|
|
|
HAVING
|
|
|
CASE
|
|
|
WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
|
|
|
- WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2 -- 如果有 2
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
|
|
|
WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
|
|
|
ELSE 0
|
|
|
END
|
|
|
<choose>
|
|
|
- <when test="isPassed == 0">IN (0, 1)</when>
|
|
|
- <when test="isPassed == 1">IN (2, 4)</when>
|
|
|
+ <when test="isPassed == 0">
|
|
|
+ IN (0, 1)
|
|
|
+ <if test="reqVO.selectStatus != null and reqVO.selectStatus !='' ">
|
|
|
+ AND
|
|
|
+ CASE
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
|
|
|
+ ELSE 0
|
|
|
+ END = #{reqVO.selectStatus}
|
|
|
+ </if>
|
|
|
+ </when>
|
|
|
+ <when test="isPassed == 1">
|
|
|
+ IN (2, 4)
|
|
|
+ <if test="reqVO.selectStatus != null and reqVO.selectStatus !='' ">
|
|
|
+ AND
|
|
|
+ CASE
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
|
|
|
+ ELSE 0
|
|
|
+ END = #{reqVO.selectStatus}
|
|
|
+ </if>
|
|
|
+ </when>
|
|
|
</choose>
|
|
|
|
|
|
ORDER BY
|
|
@@ -579,17 +601,40 @@
|
|
|
AND a.deleted = 0
|
|
|
GROUP BY a.id
|
|
|
|
|
|
- <!-- 合并 HAVING 条件 -->
|
|
|
+ <!-- 在 HAVING 子句中引用 selectStatus 别名 -->
|
|
|
+ <!-- 在 HAVING 子句中引用 selectStatus 别名 -->
|
|
|
HAVING
|
|
|
CASE
|
|
|
WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
|
|
|
- WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2 -- 如果有 2
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
|
|
|
WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
|
|
|
ELSE 0
|
|
|
END
|
|
|
<choose>
|
|
|
- <when test="isPassed == 0">IN (0, 1)</when>
|
|
|
- <when test="isPassed == 1">IN (2, 4)</when>
|
|
|
+ <when test="isPassed == 0">
|
|
|
+ IN (0, 1)
|
|
|
+ <if test="reqVO.selectStatus != null and reqVO.selectStatus !='' ">
|
|
|
+ AND
|
|
|
+ CASE
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
|
|
|
+ ELSE 0
|
|
|
+ END = #{reqVO.selectStatus}
|
|
|
+ </if>
|
|
|
+ </when>
|
|
|
+ <when test="isPassed == 1">
|
|
|
+ IN (2, 4)
|
|
|
+ <if test="reqVO.selectStatus != null and reqVO.selectStatus !='' ">
|
|
|
+ AND
|
|
|
+ CASE
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 4 THEN 1 ELSE 0 END),0) = 1 THEN 4
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0)= 1 THEN 2
|
|
|
+ WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1
|
|
|
+ ELSE 0
|
|
|
+ END = #{reqVO.selectStatus}
|
|
|
+ </if>
|
|
|
+ </when>
|
|
|
</choose>
|
|
|
|
|
|
) AS subquery;
|