sql之with as和case when用法2

with t as(
  select t1.project_type as projectType,
         t1.improve_method as improveMehtod,
         t1.project_codenumber as projectCodenumber,
         t1.project_manager as projectManager,
         t2.task_names as taskNames,
         t2.end_time as endTime
         from t_qm_work_project_info t1,t_qm_work_task_assign_manage t2
         where t2.assigned_by = 'xxx'
         and t2.project_id in('xxx','xxx','xxx')
         and t1.project_id = t2.project_id
)
   select projectManager,projectType,improveMethod,projectCodenumber,taskNames from t
   where concat(projectType,projectCodenumber,taskNames,projectManager) like '%xxx%'



<sql id="searchTable">
    with t as(
  t1.task_names as taskNames,
  t1.end_time as scheduledEndTime,
  t1.assigned_by as assignedBy,
                      t.project_id as projectId;
  case
    when t.project_status = '99' then '已结项'
    when t.project_status = 'D0' then '审批中'
    when t.project_status = 'D1' then '审批中'
            else '执行中' end as projectStatus,
            case
    when t.project_status in ('D2','D3','D4') then 'D阶段'
    when t.project_status like 'M%' then 'M阶段'
    when t.project_status like 'A%' then 'A阶段'
    when t.project_status like 'I%' then 'I阶段'
    when t.project_status like 'C%' then 'C阶段'
    when t.project_status ='99' then '已立项'
            else '立项' end as projectProgress,
    t.project_type as projectType,
    t.project_manager as projectManager,
    to_char(t.start_time,'yyyy-mm-dd') as startTime,
    to_char(t.end_time,'yyyy-mm-dd') as endTime,
    t.project_name as 'projectName',
    t.improve_method as 'improveMethod',
    t.level_two_department as 'I2Name',
    t.level_three_department as 'I3Name',
    t.level_one_department as 'I1Name',
    t.level_four_department as 'I4Name',
    t.creation_date as 'createionDate',
    t.project_status as 'projectStatus',
    t.label_year as 'labelYear',
    t.last_updated_by as 'lastUpdatedBy',
    t.last_updated_by_name as 'lastUpdatedByName',
    t.last_updated_date as 'lastUpdateDate',
    t.site_id as 'siteId',
    t.project_codenumber as 'projectCodeNumber',
            case
    when t.archiving = 'approving' then '审批中'
    when t.archiving = 'execution' then '执行中'
    when t.archiving = 'closed' then '已结项'
    when t.archiving = 'archived' then '已归档'
            else '已终止' end as archiving
    from t_qm_work_project_info t,t_qm_work_task_assign_manage t1
  <trim prefix="where"  prefixOverrides="and|or">
    <if test='assignedBy != null and assignedBy != ""'>
      and t1.assigned_by = #{assignedBy,jdbc=varchar}
    </if>
      and t1.project_id in
      <foreach collection="list" item = "item" open="(" separator="," close=")">
        #{item.projectId,jdbc=varchar}
      </foreach>
      and t.project_id = t1.project_id
      and t.use_flag = 'Y'
  </trim>
    )
</sql>
  <select id = "findDeptDetailsByPage" resultType= "com.huawei.it.mes.mesplus.inproment.vo.SearchVo">
   <include refid = "searchTable"/>
select taskNames,
       scheduleEndTime,
  projectId,
       projectStatus,
       projectProgress,
       projectType,
       projectManager,
       startTime,
       endTime,
       projectName,
       improveMethod,
       I1Name,
       I2Name,
       I3Name,
       I4Name,
       creationDate,
       status,
       labelYear,
       lastUpdatedBy,
       lastUpdatedByName,
       lastUpdatedDate,
       siteId,
       projectCodeNumber,
       archiving
from t
  <include refid="searchDetailFields"/>
order by lastUpdatedDate desc
  </select>
  <sql id="searchDeatilsFields">
  <trim prefix="where" prefixOverrides="and|or">
  <if test = 'keyWord!=null and keyWord !=""'>
  and lower(concat(projectId,projectType,projectName,improveMethod,I1Name,I2Name,
  projectManager,I3Name,I4Name,endTime,startTime,projectStatus,archiving,projectProgress,
  projectCodenumber)) like '%' || lower(#{keyWord,jdbcType=varchar}) || '%'
  </if>
  </trim>
  </sql>

Mysql内外连接:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最好的期待,未来可期

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值