Как объединить повторяющиеся строки данных из одной таблицы, чтобы просто добавить больше данных в столбец - PullRequest
0 голосов
/ 06 июня 2019

Я хотел бы взять строки со всеми столбцами, кроме одного, содержащего повторяющиеся данные, и взять одно уникальное поле и поместить его в одну строку с добавлением одного столбца. Я создаю таблицу из трех разных баз данных для создания:

Wk  RunOrder   Job Number    ModelNo ....   ItemTag
23     28          1234        abcd            1
23     28          1234        abcd            2
23     28          1234        abcd            3
23     28          1234        abcd            4
12     28          1222        abbd            2
12     28          1222        abbd            4

Что бы я хотел:

Wk  RunOrder   Job Number    ModelNo ....   ItemTag
23     28          1234        abcd          1,2,3,4
23     28          1222        abbd            2,4

столбцы RunOrder и ItemTag из разных баз данных

1 Ответ

0 голосов
/ 06 июня 2019

Мне удалось получить желаемый результат ниже, используя subquery.Я предположил, что вы хотели сохранить Wk как часть группировки.

if OBJECT_ID('tempdb..#temp') is not null
    drop table #temp

CREATE TABLE #temp (
    Wk int,
    RunOrder int,
    JobNumber int,
    ModelNo VARCHAR(10),
    ItemTag VARCHAR(5)
)
insert into #temp  values(23,28,1234,'abcd',1)
insert into #temp  values(12,28,1234,'abcd',2)
insert into #temp  values(23,28,1234,'abcd',3)
insert into #temp  values(12,28,1234,'abcd',4)


select distinct  Wk,RunOrder,JobNumber,ModelNo,
    SUBSTRING(
        (
            SELECT ','+t1.ItemTag  AS [text()]
            FROM #temp t1
            WHERE t1.Wk = t2.Wk and t1.RunOrder=t2.RunOrder and t1.JobNumber=t2.JobNumber and t1.ModelNo=t2.ModelNo
            ORDER BY t1.Wk
            FOR XML PATH ('')
        ), 2, 1000) t
from #temp t2

Другое решение, которое вы могли бы сделать, это использовать derived table.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...