gpt4 book ai didi

sql-server - 将字符串值拆分为多列

转载 作者:行者123 更新时间:2023-12-04 09:56:22 24 4
gpt4 key购买 nike

连接并显示来自 2 个表的数据,同时显示我想将列 'spec 219' 的值拆分为 219 列

SELECT * FROM

(SELECT *
FROM [CTMS].[dbo].[NUTQCDATA]
WHERE reg_tm >= '20200320000000' and reg_tm <= '20200320235959') a

LEFT JOIN

(SELECT *
FROM [CTMS].[dbo].[MES_IF_ORDER_TRK]) b

ON a.body_no = b.body_no;

结果
.-----------.------------.---------.--------.---------.----------------.----------------.----------.-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
| device_id | body_no | snetchk | stn_cd | stn_seq | stn_dt | reg_date | use_flag | spec219 |
:-----------+------------+---------+--------+---------+----------------+----------------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:
| DIAP133 | B4B 078913 | 1 | 3510 | 58 | 20200320020026 | 20200320020300 | 1 | L4RAG 5UJ423A8 P EE13 442BACN21 5116CNT8T3C 1 E212 1 1 32 CBA R 1R1 FA 121 4 5UR2 25NC 2S 12 1S HMC2 3 3 L11 2411 8 T 11 P P B1 GG F C2 BO CG 13 3 ON 1F 18 G R 3 N 4B1D L A C 11 |
'-----------'------------'---------'--------'---------'----------------'----------------'----------'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'


请注意,有 219 个字符,包括空格。空格也将在列中分配。

要求:
  • 结果应该是表 1 中的所有列 + 表 2 中的所有列('spec 219' 要拆分为 219 列)
  • 为每个新创建的“spec 219”列指定名称,例如:第 1 列 = MODEL YEAR,第 2 列 = MODEL,...第 219 列 = 'SPECIAL DISTRIBUT
  • 最佳答案

    您可以尝试使用以下语句,使用 OUTER APPLYVALUES获得预期结果的表值构造函数:

    SELECT * 
    FROM [CTMS].[dbo].[NUTQCDATA] a
    LEFT JOIN [CTMS].[dbo].[MES_IF_ORDER_TRK] b ON a.body_no = b.body_no
    OUTER APPLY (VALUES (
    SUBSTRING(b.[spec 219], 1, 1),
    SUBSTRING(b.[spec 219], 2, 1),
    ...,
    SUBSTRING(b.[spec 219], 219, 1)
    )) v ([MODEL YEAR], [MODEL], ..., [SPECIAL DISTRIBUT])
    WHERE a.reg_tm >= '2020-03-20T00:00:00' AND a.reg_tm <= '2020-03-20T23:59:59'

    关于sql-server - 将字符串值拆分为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61910262/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com