繁体   English   中英

CONCAT后如何在重复行号上拆分字符串

[英]How to split String after CONCAT over the repetition of Row Number

如图所示,我有 2 个表:

我想通过连接它们来连接这两个表,并将它们拆分为重复的行号。

    CREATE TABLE #portiontable (
 PortionKey NVARCHAR(100),
 RN         INT,
 )

CREATE TABLE #finaltable (
 Value     NVARCHAR(100),
 RN         INT,
 )

 INSERT INTO #finaltable (Value,RN)
 VALUES ('KRM__21X0E',1),
        ('C',2),
        ('',3),
        ('',4),
        ('KRM__21X0E',1),
        ('C',2),
        ('',3),
        ('',4)
INSERT INTO #portiontable (PortionKey,RN)
 VALUES ('100',1),
        ('0AD',2),
        ('D',3)
SELECT * FROM #finaltable f
SELECT * FROM #portiontable p

SELECT (SELECT ''+ ValuePortionKey
         FROM (
         SELECT f.RN,f.value,P.PortionKey, f.value + P.PortionKey AS ValuePortionKey
FROM #portiontable p 
INNER JOIN #finaltable f ON p.rn = f.rn
         ) ft
FOR XML PATH('')) as PartSignature


DROP TABLE #portiontable
DROP TABLE #finaltable

所需的 output 为 2 行:

PartSignature
KRM__21X0E100C0ADD
KRM__21X0J100K0ADD

实际的 output 是:

PartSignature
KRM__21X0E100C0ADDKRM__21X0J100K0ADD

首先,您似乎在#finaltable中有两组数据。 您需要另一列将其标识为一组。 我在#finaltable ValueSet

而且,我认为您的示例数据与预期的 output 不对应。 我已经修改了#finaltable的示例数据

最后,使用STRING_AGG执行字符串连接,然后您可以GROUP BY新的ValueSet

CREATE TABLE #portiontable 
(
    PortionKey NVARCHAR(100),
    RN         INT,
)

CREATE TABLE #finaltable 
(
    ValueSet INT,
    Value     NVARCHAR(100),
    RN         INT,
)

 INSERT INTO #portiontable (PortionKey,RN)
 VALUES ('100',1),
        ('0AD',2),
        ('D',3)

 INSERT INTO #finaltable (ValueSet,Value,RN)
 VALUES (1,'KRM__21X0E',1),
        (1,'C',2),
        (1,'',3),
        (1,'',4),
        (2,'KRM__21X0J',1),
        (2,'K',2),
        (2,'',3),
        (2,'',4)


SELECT  f.ValueSet, 
        STRING_AGG (f.Value + p.PortionKey, '') AS ValuePortionKey
FROM    #portiontable p
        INNER JOIN #finaltable f    ON  p.RN    = f.RN
GROUP BY f.ValueSet

DROP TABLE #portiontable
DROP TABLE #finaltable

-- Result
1   KRM__21X0E100C0ADD
2   KRM__21X0J100K0ADD

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM