吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1522|回复: 18
收起左侧

[求助] sql数据清洗,求思路

[复制链接]
茫茫狐 发表于 2022-9-28 17:36
就是数据表中2行数据,他们有共同的order_id,想根据获取的字段不同信息不同(指的是load_or_unload字段,这里只有2,1),然后对目标字段的字符串(desination)进行不一样的截取
大家有啥思路么

数据表截图获取截图
image.png

附上sql语句
[SQL] 纯文本查看 复制代码
SELECT
	agv.ID AS task_id,
	agv.task_set_no AS order_id,
	agv.parameter_int4_2 AS load_or_unload,
	SUBSTRING(ORDE.PARAMETERS,1,34) AS destination, --目前只能单一对字段截取
	agv.created_timestamp AS task_create_time,
	agv.last_updated_timestamp AS task_finish_time 
FROM
	layer2_pallet.agv_task agv
	INNER JOIN (
	SELECT
		o.order_id,
		oc.PARAMETERS 
	FROM
		layer4_1_om."order" o,
		layer4_1_om."order_command" oc 
	WHERE
		o.ts_id = 'p2p' 
		AND o.order_id = oc.id
		AND create_time BETWEEN '2022-08-31 00:00:00' 
		AND '2022-08-31 23:59:59' 
	ORDER BY
		create_time 
	) AS ORDE ON agv.task_set_no = CAST ( ORDE.order_id AS VARCHAR ) 
WHERE
	parameter_int4_2 = 2 
	OR parameter_int4_2 = 1 
ORDER BY
	agv.task_set_no ASC,
	agv.created_timestamp ASC,
	parameter_int4_2 DESC

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

godonlyknow 发表于 2022-9-28 17:54
你是需要清掉什么条件的数据?
finillusion 发表于 2022-9-28 17:58
你好
不清楚具体要怎么不同的截取
就大概说一下思路看一下是不是你想要的

[SQL] 纯文本查看 复制代码
SUBSTRING(ORDE.PARAMETERS,1,34) AS destination, 

改为
[SQL] 纯文本查看 复制代码
if(agv.load_or_unload,1, SUBSTRING(ORDE.PARAMETERS,1,34),另一种截取) as destination

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
茫茫狐 + 1 + 1 谢谢@Thanks!

查看全部评分

laomu301857 发表于 2022-9-28 18:11
finillusion 发表于 2022-9-28 17:58
你好
不清楚具体要怎么不同的截取
就大概说一下思路看一下是不是你想要的

直接写两个sql然后union一下就行了吧
狐白本白 发表于 2022-9-28 18:21
写一个函数 把写入参设置成第二列的数据 然后函数内容执行按照参数提取指定位置 就是个思路 不会这个复杂的sql 放到jutyter按这个思路很简单
九州 发表于 2022-9-28 18:31
case
when  1  subString ()
when  2  subString()
end as result
是这个意思么?
   

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
茫茫狐 + 1 + 1 谢谢@Thanks!

查看全部评分

浣熊 发表于 2022-9-28 18:38
oracle 的话 可以试试decode(),通用SQL的话用楼上的
赵黑黑 发表于 2022-9-28 18:50
CASE
                load_or_unload
                WHEN 1' THEN
                substring_index(desination, ',', 1 )
                WHEN '2' THEN
                substring_index(desination, ',', 2 )
END

这个可以实现 如果是1 截取 第一个逗号  如果是2 截取第二个逗号之前的

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
茫茫狐 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| 茫茫狐 发表于 2022-9-28 20:25
九州 发表于 2022-9-28 18:31
case
when  1  subString ()
when  2  subString()

谢谢大佬,这个可以,pgsql也通用,我忘记标注那个sql数据库语言了
 楼主| 茫茫狐 发表于 2022-9-28 20:26
赵黑黑 发表于 2022-9-28 18:50
CASE
                load_or_unload
                WHEN 1' THEN

谢大佬模板,感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表