Как объединить столбцы данных на основе другого столбца в SQL? - PullRequest
0 голосов
/ 24 апреля 2019

Я использую Microsoft SQL Server 2008 и хотел бы объединить некоторые столбцы на основе другого значения в другом столбце.Данные моего примера: enter image description here

Ожидаемый результат: enter image description here

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019
SELECT
    t1.Style,

    ProductIDs = STUFF((
        SELECT ', ' + t2.ProductIDs 
        FROM TableName t2
        WHERE t1.Style= t2.Style
        FOR XML PATH('')
    ),1, 2, '')
FROM TableName t1
GROUP BY t1.Style
0 голосов
/ 24 апреля 2019

Это сложно в SQL Server 2008 - вы должны обновить программное обеспечение! Это в конце его жизни.

Метод использует XML:

select s.style,
       stuff( (select ',' + convert(varchar(255), curr)
               from (select t.*,
                            row_number() over (partition by t.style order by (select null)) as rowid
                     from t
                    ) t cross apply
                    (values (GPB, 1), (EUR, 2), (USD, 3), (AUD, 4)
                    ) v(curr, ord)
               where t.style = s.style
               order by rowid, ord
               for xml path ('')
              ), 1, 1, '') as currencies
from (select distinct style from t) s;

order by объединяет все значения из одной строки и упорядочивает значения по столбцам.

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