Агрегировать данные из представления как UDF для использования в операторе выбора - PullRequest
1 голос
/ 10 февраля 2010

У меня есть существующее представление, которое возвращает данные в следующем формате.

option_name           product_id

XSMALL (2-6)          17854
SMALL (6-10)          17854
MEDIUM (10-14)      17854
LARGE                 18232

Как мне вернуть эти данные в поле, разделенном запятыми, отформатированным так, как это, на основе отправки product_id в функцию?

XSMALL (2-6), МАЛЫЙ (6-10), СРЕДНИЙ (10-14)

Я использую MS SQL 2k5.

Ответы [ 2 ]

1 голос
/ 10 февраля 2010

Вы можете использовать FOR XML PATH в SQL Server 2005 и выше:

CREATE FUNCTION dbo.GetProductNames(@ProductID int)
RETURNS TABLE
AS
SELECT
    Options = SUBSTRING((
        SELECT ', ' + o2.option_name
        FROM options AS o2
        WHERE o2.product_id = o1.product_id
        FOR XML PATH('')), 3, 1000)
FROM options AS o1
WHERE o1.product_id = @ProductID
0 голосов
/ 10 февраля 2010

**

объявить @option_name varchar (1000) select @option_name = isnull (@ option_name + ',', '') + option_name из имени таблицы select @ option_name

**

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