【SQL】列转字符串函数
还是这个需求
主界面的列表表格是直接在后台用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】列转字符串函数的更多相关文章
- SQL Server:字符串函数
以下所有例子均Studnet表为例: 1. len():计算字符串长度 len()用来计算字符串的长度,每个中文汉字或英文字母都为一个长度 select sname, len(sname) from ...
- SQL Server 分隔字符串函数实现
在SQL Server中有时候也会遇到字符串进行分隔的需求.平时工作中常常遇到这样的需求,例如:人员数据表和人员爱好数据表,一条人员记录可以多多人员爱好记录,而往往人员和人员爱好在界面展示层要一并提交 ...
- Sql Server分割字符串函数
-- Description: 分割字符串函数 -- SELECT * FROM dbo.Split('a,b,c,d,e,f,g',',') -- ========================= ...
- Oracle数据库sql 列转字符串行函数WMSYS.WM_CONCAT()
例.select TO_CHAR(WMSYS.WM_CONCAT(ID)) from patrol_data_content where patrol_unit_id = '1628D189543B ...
- SQL注入截取字符串函数
在sql注入中,往往会用到截取字符串的问题,例如不回显的情况下进行的注入,也成为盲注,这种情况下往往需要一个一个字符的去猜解,过程中需要用到截取字符串.本文中主要列举三个函数和该函数注入过程中的一些用 ...
- sql server常用字符串函数
--返回字符表达式中最左侧字符的ASCII代码值 --将整数ASCII代码转换为字符 )--a )--A ')--A SELECT CHAR('A')--在将 varchar 值 'A' 转换成数据类 ...
- SQL Server中字符串函数LEN 和 DATALENGTH辨析
LEN:返回指定字符串表达式的字符(而不是字节)数,其中不包含尾随空格. DATALENGTH:返回用于表示任何表达式的字节数. 示例1:(相同,返回结果都为5): select LEN ('ssss ...
- SQL Server之字符串函数
以下所有例子均Studnet表为例: 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() ...
- SQL字符串分割转列,Sql列转字符串
declare @strVar varchar(2000)declare @ResultVar varchar(2000)set @ResultVar='[薄饼],[点心],[海鲜],[酒吧],[楼面 ...
- SQL中常用字符串函数
--CHARINDEX 返回指定字符的位置--2个参数,第一个是要查找的字符串 第二个参数:要搜索的字符串 参数3:开始查找的位置--查找位置从1开始,返回结果为0时表示为结果为空 SELECT CH ...
随机推荐
- Qt内存回收机制
参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=16 Qt中内存的回收是自己完成的,实验中,我们自定义一个按钮,通过重写析构函数来观察现象. 新建 ...
- 第二次大作业BLOG心得
(1)前言: 知识点: ①ArrayLsit的知识点: ArrayList 是 Java 中的动态数组实现,它提供了自动调整大小的功能,可以根据需要动态增长或收缩. ArrayList 可以存储任意类 ...
- php分组查询和聚合函数 数据显示的顺序
// 分组查询和聚合函数 // 分组查询 : 将指定字段中的数据,按照不同的具体数值,进行分组 // 数据相同的分在一个分组中 ...
- [SWPUCTF 2021 新生赛]gift_F12
首先我们打开环境会发现花里胡哨的,而题目中有提示:F12,所以我们直接F12查看源码 然后ctrl+f信息检索flag.直接找到flag提交 但要注意提交格式为NSSCTF{}
- 基于 Easysearch kNN 搭建即时图片搜索服务
环境准备 启动 Easysearch 服务: # Make sure your vm.max_map_count meets the requirement sudo sysctl -w vm.max ...
- BigDecimal的小数位
在使用BigDecimal的divide方法进行除法运算时,需要传入两个参数:被除数和除数.如果要对除法结果进行保留小数位数的处理,可以使用该方法的重载形式,传入一个指定小数位数和舍入规则的MathC ...
- NumPy 差分、最小公倍数、最大公约数、三角函数详解
NumPy 差分 离散差分意味着相邻元素之间的减法. 例如,对于 [1, 2, 3, 4],离散差分将是 [2-1, 3-2, 4-3] = [1, 1, 1] 要找到离散差分,使用 diff() 函 ...
- ecnuoj 5042 龟速飞行棋
5042. 龟速飞行棋 题目链接:5042. 龟速飞行棋 赛中没过,赛后补题时由于题解有些抽象,自己写个题解. 可以发现每次转移的结果只跟后面两个点的胜负状态有关. 不妨设 \(f_{u,a,b}\) ...
- QT学习:09 QByteArray
--- title: framework-cpp-qt-09-QByteArray EntryName: framework-cpp-qt-09-QByteArray date: 2020-04-16 ...
- QT学习:08 QString
--- title: framework-cpp-qt-08-QString EntryName: framework-cpp-qt-08-QString date: 2020-04-16 15:36 ...