Объедините несколько строк в одну строку на одной таблице - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть таблица, содержащая несколько страховых полисов для каждого клиента, которая содержит

Заказ (первичный, вторичный и т. Д. До 9 возможных страховых полисов)

Мне нужна одна строка для каждого клиента, содержащаявсе страховые полисы клиента в порядке важности.

например:

  Client, Order, Company, Number, Start,    End, Co-Pay, Active?
  1       1      BCBS     12345   1/1/2019       $10     Active
  1       2      Medicare X21Y52  2/1/2018               Active
  1       6      Self-Pay    
  2       6      Medicare X21Y52  2/1/2018               Active
  2       8      Self-Pay    

Мне нужна отдельная строка для каждого Клиента с данными для каждой активной политики

1,1,BCBS,12345,1/1/2019,,$10,Active,2,Medicare,X21Y52,2/1/2018,,,Active,6,Self-Pay,,,,,  
2,6,Medicare,x22y22,7/1/2002,,,Active,8,Self-Pay,,,,,,    

Как мне написать код, чтобы получить желаемый результат.

Существует максимум 9 ссылок на политики

Требуются только активные политики

1 Ответ

0 голосов
/ 22 апреля 2019

Поскольку вы не опубликовали свою схему, я просто делаю некоторые предположения о типе данных.Обратите внимание, что вам нужно преобразовать в строку перед объединением

select  t.Client, stuff(csv, 1, 1, '')
from    (
            select  distinct Client
            from    a_table t
        ) t
        cross apply
        (
            select  ',' + coalesce(x.Company, '') +
                    ',' + coalesce(x.Number, '') +
                    ',' + coalesce(convert(varchar(10), [Start], 121), '') +
                    ',' + . . . 
            from    a_table x
            where   x.Client    = t.Client
            and     x.Active    = 'Active'
            order by [Order]
            for xml path ('')
        ) c (csv)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...