简体   繁体   English

合并多行

[英]Combining multiple rows

I have this thing I don't know how to solve. 我有这个东西,我不知道该怎么解决。

TABLE 1: ITEMS 表1:项目

ID | NO_ 
1 | SX1234
2 | SXABCD

TABLE 2: Text 表2:文本

Reffilename | RefKey | LanguageCode | ID | LineNumber | Txt1
Product | SX1234 | ENU | 2 | 0 | This is
Product | SX1234 | ENU | 2 | 1 | my text
Product | SX1234 | ENU | 2 | 2 | I want to come 
Product | SX1234 | ENU | 2 | 3 | out in one field
....

I can do this 我可以做这个

SELECT i.[No]_, t.[Txt1] 
FROM ITEMS AS i
INNER JOIN 
TEXT AS t ON i.[no_] = t.RefKey
WHERE t.Reffilename = 'Prouduct' AND t.LanguageCode = 'ENU' AND t.ID = 2 AND i.[No_] = 'SX1234'

Thats give me this result. 那给了我这个结果。

SXI1234 | This is
SXI1234 | my text
SXI1234 | I want to come
SXI1234 | out in one field

But I want to merge the text, so my output will come: 但是我想合并文本,所以我的输出将是:

SXI1234 | This is my text I Want to come out in one field

How do i solve this? 我该如何解决?

SELECT a.RefKey,Stuff((SELECT ''+ Txt1  FROM Text
where a.Id=b.Id
 FOR
 XML PATH(''),TYPE).value('text()[1]','nvarchar(max)'),1,2,N''
) As Text 
from ITEMS a
group by a.Id

Try using STUFF() function 尝试使用STUFF()函数

SELECT i.[No]_, text= STUFF((
    SELECT ', ' + t.[Txt1] 
    FROM ITEMS AS a
    INNER JOIN 
    TEXT AS t ON i.[no_] = t.RefKey
    WHERE a.[No]_= i.[No]_
    FOR XML PATH, TYPE).value(N'.[1]', N'varchar(max)'), 1, 2, '')
FROM ITEMS AS i
GROUP BY i.[No]_
DECLARE @t1 TABLE (Id INT, Num CHAR (7))
INSERT INTO @t1
    VALUES (1, 'SX1234'), (2, 'SXABCD')
DECLARE @t2 TABLE (Reffilename Char(8), RefKey CHAR (7), LanguageCode  CHAR(4), ID INT, LineNumber INT, Txt1 VARCHAR(MAX))
INSERT INTO @t2
    VALUES ('Product', 'SX1234', 'ENU', 2, 0, 'This isa,
    ('Product', 'SX1234', 'ENU', 2, 1, 'my text'),
    ('Product', 'SX1234', 'ENU', 2, 2, 'I want to come'),
    ('Product', 'SX1234', 'ENU', 2, 3, 'out in one field')

SELECT DISTINCT RefKey, Result = STUFF((SELECT ' ' + t2.Txt1
                                FROM @t1 t1
                                JOIN @t2 t2 ON t1.Num = t2.RefKey 
                                FOR XML PATH('')), 1, 1, '' ) 
FROM @t2

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

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