我有以下字符串
'06/30/2020;58044.373;.001;12/31/2020;58042.373;.003;06/30/2021;78044.373;.007'
我需要将其转换为:
col 1 col 2 col 3
---- ----- -----
06/30/2020 58044.373 .001
12/31/2020 58042.373 .003
06/30/2021 78044.373 .007
我只能使用statmets,不能使用游标或SP。
有什么帮助吗?
解决方法STRING_SPLIT(不安全):
WITH cte AS (
SELECT c, value,
ROW_NUMBER() OVER(ORDER BY (SELECT 1)) % 3 AS rn,
(ROW_NUMBER() OVER(ORDER BY (SELECT 1))-1) / 3 AS grp
FROM t
CROSS APPLY STRING_SPLIT(c, ';')
)
SELECT MAX(CASE WHEN rn = 1 THEN value END) AS col1,
MAX(CASE WHEN rn = 2 THEN value END) AS col2,
MAX(CASE WHEN rn = 0 THEN value END) AS col3
FROM cte
GROUP BY c,grp;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。