还是这个需求

主界面的列表表格是直接在后台用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. 小程序视图组件 scroll-view

    视图容器组件 3.2.1.swiper 滑块视图容器. https://developers.weixin.qq.com/miniprogram/dev/component/swiper.html 3 ...

  2. 改变函数中的this指向

      // 改变函数的this指向         // 先记住一句话 : 箭头函数不能改变this指向         // 语法1: call() 方法         //        在调用函 ...

  3. 带你了解磁盘驱动程序(xv6)

    磁盘驱动程序 本文来聊聊磁盘驱动程序,驱动程序是硬件的接口,操作系统通过这个接口来控制硬件工作,所以驱动程序就好比是硬件和系统之间的桥梁.这是百科上给出的解释,可能看起来还是云里雾里,我来做做注解. ...

  4. linux系统下,jdk的安装和配置教程,以jdk-8u311为例

    1.官方下载 下载地址:https://www.oracle.com/ 本文以jdk8为例, 1)下载地址:https://www.oracle.com/java/technologies/downl ...

  5. ABC336

    E 数位 dp. 定义 \(dp_{pos,s,t,0/1}\) 为在第 \(pos\) 位,当前数字和是 \(s\),这个数模规定的数字和为 \(t\),是 \(/\) 不是极限的情况数. 于是我们 ...

  6. Mysql主机环境导入导出数据

    mysql数据库,在主机环境下导出数据为csv文件. 命令:select * into outfile '/mysql/11.csv' from 表; 可能会报错:ERROR 1290 (HY000) ...

  7. 行为型模式(Behavioer Pattern)

    行为型设计模式 行为型模式定义了系统中对象之间的交互与通信,研究系统在运行时对象之间的相互通信与协作,进一步明确对象的职责,包括对系统中较为复杂的流程的控制. 在软件系统运行时对象并不是孤立存在的,它 ...

  8. injectionIII iOS代码注入工具(下)

    injectionIII iOS代码注入工具(下) 本文将解决如何使用injectionIII对主页热重载,如果对injectionIII不了解的同学请回到上篇查看 Vaccine 简单地说Vacci ...

  9. 解决Linux下无法编译带有中文的JAVA程序问题

    只要在编译的时候加上-encoding gbk即可 例如: javac -encoding gbk Myclass.java

  10. Java的运行机制和JDK,JRE,JVM的区别

    源文件(Java文件)   >  编译器  > 字节码(class文件)  >  JVM(java虚拟机)  >  操作系统  1.java首先利用文本编辑器写java源程序, ...