Я использую SSMS 2008 со следующим запросом:
DECLARE @TestData TABLE
(
address_desc NVARCHAR(100) NULL
,people_id UNIQUEIDENTIFIER NULL
);
INSERT @TestData
SELECT a.address_desc, a.people_id
FROM dbo.address_view a
SELECT a.people_id,
(SELECT SUBSTRING(
(SELECT ';'+b.address_desc
FROM @TestData b
WHERE a.people_id = b.people_id
FOR XML PATH(''))
,2
,4000)
) GROUP_CONCATENATE
FROM @TestData a
GROUP BY a.people_id
Этот запрос работает, но я хочу превратить его в представление или функцию, чтобы я мог вызывать его из разных хранимых процедур.Как я могу это сделать?Насколько я понимаю, переменные не могут быть объявлены в операторах VIEW.
Hong, вот мой обновленный запрос, основанный на вашем совете, который дает мне ошибки:
DECLARE @TestData TABLE
(
address_desc NVARCHAR(100) NULL
,people_id UNIQUEIDENTIFIER NULL
);
INSERT @TestData
SELECT a.address_desc, a.people_id FROM dbo.address_view a
SELECT a.people_id,
(SELECT address_desc, people_id FROM dbo.address_view),
(SELECT SUBSTRING(
(SELECT ';'+b.address_desc
FROM @TestData b
WHERE a.people_id = b.people_id
FOR XML PATH(''))
,2
,4000)
) GROUP_CONCATENATE
FROM @TestData a
GROUP BY a.people_id