#sql-server
#sql-сервер
Вопрос:
У меня есть таблица, содержащая несколько страховых полисов для каждого клиента, которая содержит
Порядок (первичный, вторичный и т. Д. До 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. Изменил мое требование, поэтому я не использовал результат XML. Аналогично коду, который я использовал в другом вопросе Спасибо за вашу помощь
Ответ №1:
Поскольку вы не опубликовали свою схему, я просто делаю некоторые предположения о типе данных. Обратите внимание, что перед конкатенацией необходимо преобразовать в строку
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)