还是这个需求

主界面的列表表格是直接在后台用SQL查出来的

public String getQuerySql(ElemBean condition, List<Object> params) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM (SELECT T.ID, T.MAINTAIN_ID, T.VIN, T.VEHICLE_MODEL_NAME, \n");
sql.append(" T.VEHICLE_MODEL_CODE, T.RECOMMEND_ASC_AREA, T.VEHICLE_NO, \n");
sql.append(" T.CLAIMANT_NAME, T.CTO_NAME, T.CTO_PHONE, \n"); // 2021年4月27日 11点30分 daizhizhou
sql.append(" T.CREATED_AT, T.STATUS, T.RECOMMEND_ASC_CODE, T.RECOMMEND_ASC_NAME, \n");
sql.append(" T.NAME, T.PHONE, T.MILEAGE, T.MANUFACTURING_DATE, T.PRODUCTION_DATE, T.FIRST_CLOSE_DATE, \n");
sql.append(" T.FIRST_SAVE_DATE, (SELECT MAX(CREATED_AT) FROM TT_FORESEE_MAINTAIN_ORDER_AUDIT TI1 WHERE TI1.ORDER_ID=T.ID AND APPLY_STATUS=56771003) APPLY_CLOSE_DATE, \n"); sql.append(" (SELECT MAX(CREATED_AT) FROM TT_FORESEE_MAINTAIN_ORDER_AUDIT TI1 WHERE TI1.ORDER_ID=T.ID AND APPLY_STATUS=56771006) APPLY_OTHER_DATE, \n");
sql.append(" (SELECT APPLY_STATUS FROM TT_FORESEE_MAINTAIN_ORDER_AUDIT TI1 WHERE TI1.ORDER_ID=T.ID ORDER BY TI1.CREATED_AT DESC LIMIT 1) MAX_APPLY_STATUS, \n");
sql.append(" (SELECT IF(APPLY_STATUS=56771003, APPLY_CLOSE_REMARK, APPLY_OTHER_ASC_REMARK) FROM TT_FORESEE_MAINTAIN_ORDER_AUDIT TI1 WHERE TI1.ORDER_ID=T.ID ORDER BY TI1.CREATED_AT DESC LIMIT 1) MAX_APPLY_REMARK, \n");
sql.append(" (SELECT AUDIT_REMARK FROM TT_FORESEE_MAINTAIN_ORDER_AUDIT TI1 WHERE TI1.ORDER_ID=T.ID ORDER BY TI1.CREATED_AT DESC LIMIT 1) MAX_AUDIT_REMAR, \n");
sql.append(" (SELECT GROUP_CONCAT(FAULT_DESC) FROM TT_FORESEE_MAINTAIN_ORDER_DETAIL TI1 WHERE TI1.ORDER_ID=T.ID) FAULT_DESC, \n");
sql.append(" (SELECT GROUP_CONCAT(CORRECTIVE_ACTION) FROM TT_FORESEE_MAINTAIN_ORDER_DETAIL TI1 WHERE TI1.ORDER_ID=T.ID) CORRECTIVE_ACTION, \n"); sql.append(" (SELECT GROUP_CONCAT(FAULT_CODE) FROM TT_FORESEE_MAINTAIN_ORDER_DETAIL TI1 WHERE TI1.ORDER_ID=T.ID) FAULT_CODE, \n");
sql.append(" (SELECT GROUP_CONCAT(FAULT_LEVEL) FROM TT_FORESEE_MAINTAIN_ORDER_DETAIL TI1 WHERE TI1.ORDER_ID=T.ID) FAULT_LEVEL \n");
sql.append(" FROM TT_FORESEE_MAINTAIN_ORDER T \n");
sql.append(" LEFT JOIN TM_VEHICLE_BASE TV ON TV.VIN = T.VIN \n");
sql.append(" LEFT JOIN VW_PRODUCT VP ON VP.MODEL_CODE = TV.MODEL_CODE \n");
sql.append(" WHERE 1 = 1 \n"
); UserInfoDto userInfo = UserUtil.getSessionUser();
if(userInfo.getOrgType().intValue() == Constant.ORG_TYPE_10 || userInfo.getOrgType().intValue() == Constant.ORG_TYPE_13) {
sql.append(" AND T.RECOMMEND_ASC_CODE = ? \n");
params.add(userInfo.getOrgCode());
}else if(!UserUtil.isFactoryType(userInfo.getOrgType())) {
sql.append(" AND 1<>1 \n");
}
if(!condition.isNull("vehicleModelCode")) {
sql.append(" AND T.VEHICLE_MODEL_CODE LIKE ? \n");
params.add("%"+condition.getStr("vehicleModelCode")+"%");
}
if(!condition.isNull("area")) {
sql.append(" AND FIND_IN_SET(T.RECOMMEND_ASC_AREA,?) \n");
params.add("%"+condition.getStr("area")+"%");
}
if(!condition.isNull("vin")) {
sql.append(" AND T.VIN LIKE ? \n");
params.add("%"+condition.getStr("vin")+"%");
}
if(!condition.isNull("vehicleNo")) {
sql.append(" AND T.VEHICLE_NO LIKE ? \n");
params.add("%"+condition.getStr("vehicleNo")+"%");
}
if(!condition.isNull("createStardate")) {
sql.append(" AND T.CREATED_AT >= ? \n");
params.add(condition.getStr("createStardate"));
}
if(!condition.isNull("createEndate")) {
sql.append(" AND T.CREATED_AT < DATE_ADD(?, INTERVAL 1 DAY) \n");
params.add(condition.getStr("createEndate"));
}
if(!condition.isNull("maintainId")) {
sql.append(" AND T.MAINTAIN_ID LIKE ? \n");
params.add("%"+condition.getStr("maintainId")+"%");
}
if(!condition.isNull("status")) {
sql.append(" AND T.STATUS = ? \n");
params.add(condition.getInt("status"));
}
if(!condition.isNull("recommendAscCode")) {
sql.append(" AND T.RECOMMEND_ASC_CODE LIKE ? \n");
params.add("%"+condition.getStr("recommendAscCode")+"%");
}
if(!condition.isNull("recommendAscName")) {
sql.append(" AND T.RECOMMEND_ASC_NAME LIKE ? \n");
params.add("%"+condition.getStr("recommendAscName")+"%");
}
if(!condition.isNull("phone")) {
sql.append(" AND T.PHONE LIKE ? \n");
params.add("%"+condition.getStr("phone")+"%");
}
if(!condition.isNull("faultCode")) {
sql.append(" AND T.ID IN (SELECT ORDER_ID FROM TT_FORESEE_MAINTAIN_ORDER_DETAIL WHERE FAULT_CODE LIKE ?) \n");
params.add("%"+condition.getStr("faultCode")+"%");
}
if(!condition.isNull("faultLevel")) {
sql.append(" AND T.ID IN (SELECT ORDER_ID FROM TT_FORESEE_MAINTAIN_ORDER_DETAIL WHERE FAULT_LEVEL = ?) \n");
params.add(condition.getStr("faultLevel"));
}
sql.append(scSqlUtil.getCyBrandWhereSql("vp.BRAND_ID", params));
sql.append(" ) A \n");
return sql.toString();
}

这4个字段是从employee进行取值的,这意味着需要直接从SQL中处理好直接带给程序【后台无法处理】

联表 是主表的ID关联 其他表的外键 ORDER_ID:

 WHERE TI1.ORDER_ID = T.ID 

合并SQL,最后发现,下面的SQL已经这么做了

--         (SELECT group_concat(`NAME` SEPARATOR ', ') FROM TT_FORESEE_MAINTAIN_ORDER_EMPLOYEE EMP WHERE T.ID = EMP.ORDER_ID AND EMP.TYPE = 0) CLAIMANT_NAME,
-- (SELECT group_concat(`NAME` SEPARATOR ', ') FROM TT_FORESEE_MAINTAIN_ORDER_EMPLOYEE EMP WHERE T.ID = EMP.ORDER_ID AND EMP.TYPE = 0) CTO_NAME,
-- (SELECT group_concat(`PHONE` SEPARATOR ', ') FROM TT_FORESEE_MAINTAIN_ORDER_EMPLOYEE EMP WHERE T.ID = EMP.ORDER_ID AND EMP.TYPE = 0) CTO_PHONE,

【SQL】列转字符串函数的更多相关文章

  1. SQL Server:字符串函数

    以下所有例子均Studnet表为例: 1. len():计算字符串长度 len()用来计算字符串的长度,每个中文汉字或英文字母都为一个长度 select sname, len(sname) from ...

  2. SQL Server 分隔字符串函数实现

    在SQL Server中有时候也会遇到字符串进行分隔的需求.平时工作中常常遇到这样的需求,例如:人员数据表和人员爱好数据表,一条人员记录可以多多人员爱好记录,而往往人员和人员爱好在界面展示层要一并提交 ...

  3. Sql Server分割字符串函数

    -- Description: 分割字符串函数 -- SELECT * FROM dbo.Split('a,b,c,d,e,f,g',',') -- ========================= ...

  4. Oracle数据库sql 列转字符串行函数WMSYS.WM_CONCAT()

    例.select TO_CHAR(WMSYS.WM_CONCAT(ID)) from patrol_data_content  where patrol_unit_id = '1628D189543B ...

  5. SQL注入截取字符串函数

    在sql注入中,往往会用到截取字符串的问题,例如不回显的情况下进行的注入,也成为盲注,这种情况下往往需要一个一个字符的去猜解,过程中需要用到截取字符串.本文中主要列举三个函数和该函数注入过程中的一些用 ...

  6. sql server常用字符串函数

    --返回字符表达式中最左侧字符的ASCII代码值 --将整数ASCII代码转换为字符 )--a )--A ')--A SELECT CHAR('A')--在将 varchar 值 'A' 转换成数据类 ...

  7. SQL Server中字符串函数LEN 和 DATALENGTH辨析

    LEN:返回指定字符串表达式的字符(而不是字节)数,其中不包含尾随空格. DATALENGTH:返回用于表示任何表达式的字节数. 示例1:(相同,返回结果都为5): select LEN ('ssss ...

  8. SQL Server之字符串函数

    以下所有例子均Studnet表为例:   计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() ...

  9. SQL字符串分割转列,Sql列转字符串

    declare @strVar varchar(2000)declare @ResultVar varchar(2000)set @ResultVar='[薄饼],[点心],[海鲜],[酒吧],[楼面 ...

  10. SQL中常用字符串函数

    --CHARINDEX 返回指定字符的位置--2个参数,第一个是要查找的字符串 第二个参数:要搜索的字符串 参数3:开始查找的位置--查找位置从1开始,返回结果为0时表示为结果为空 SELECT CH ...

随机推荐

  1. Qt工具栏的使用

    参考视频:黑马科技:https://www.bilibili.com/video/BV1XW411x7NU?p=19 对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互. ...

  2. JVM面试篇(下)

    垃圾收集器 简述 Java 垃圾回收机制 在 java 中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行.在 JVM 中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行 ...

  3. 初入JavaScript

    js是轻量级 弱类型 脚本语言 html是 超文本 标记语言 脚本语言和标记语言的主要区别 标记语言,可以通过浏览器直接执行 脚本语言,必须要通过编译,浏览器内核的编译,才能正常运行 简单理解,脚本语 ...

  4. kettle从入门到精通 第十三课 kettle 字符串操作

    1.本次示例讲解一些常用的字符串操作,有字段拼接,枚举值转换,计算器.字符串替换.字段拆分. 2.输入元数据有firstName.secondName.sex.salary.englishName.o ...

  5. UDP 发送两遍对比一致能绝对判定发送过程成功传递完整数据吗

    UDP 发送两边对比一致,能确定数据传输无错误吗 对比两条相同数据的MD5 这样做可行吗

  6. java8 Lambda 测试示例

    import com.google.gson.Gson; import org.junit.Test; import java.util.Arrays; import java.util.IntSum ...

  7. ITMS-90717: 无效的应用程序商店图标

    PS导入照片 图像->模式->索引颜色 透明度去掉打勾保存即可

  8. vue3.4的更新,保证你看的明明白白

    defineModel 同学已经转正 defineModel 在vue3.3中还是一个实验性功能, 但是经过一个学期的努力,该同学已经转正. defineModel的简单介绍 defineModel( ...

  9. 了解Microsoft Media Foundation

    关于Microsoft Media Foundation 是什么 Microsoft Media Foundation是用来处理(创建.修改.传输.合成)多媒体数据(音视频)的一个平台. 有什么用 M ...

  10. python提取特定格式的数据

    Excel Grid Data Converter 知识点总结 本文档总结了 ExcelGridConverter.py 脚本所涉及的关键 Python 知识点.该脚本用于从多个 Excel 文件中提 ...