В отдельном потоке Я получил рабочий пример того, как преобразовать мой сохраненный процесс в представление, которое будет содержать имена клиентов в сопоставлении заказов, где заказы - это разделенные запятыми списки заказов, включая NULL без заказов. Поэтому для приведенной ниже таблицы мне нужно, чтобы в представлении появилось следующее:
Name Orders
'John' New Hat, New Book, New Phone
'Marry' NULL
Мне нужно индексировать представление, но вы не можете сделать это, если запрос SELECT в представлении имеет APPLY и / или подзапросы. Можно ли перевести это представление в индексированное представление?
create table Customers (CustomerId int, CustomerName VARCHAR(100))
create table Orders (CustomerId int, OrderName VARCHAR(100))
insert into Customers (CustomerId, CustomerName) select 1, 'John' union all select 2, 'Marry'
insert into Orders (CustomerId, OrderName) select 1, 'New Hat' union all select 1, 'New Book' union all select 1, 'New Phone'
go
create view OrderView as
select c.CustomerName, x.OrderNames
from Customers c
cross apply (select stuff((select ',' + OrderName from Orders o
where o.CustomerId = c.CustomerId for xml path('')),1,1,'')
as OrderNames) x
go