Как я могу вернуть несколько строк как одну строку в T-SQL? - PullRequest
4 голосов
/ 24 февраля 2009

Несколько месяцев назад наш поставщик добавил в нашу систему заявок возможность добавлять любое количество настраиваемых полей в заявку. Я хотел бы запросить эти поля вместе с другой информацией о вызовах для целей отчетности, но каждое расширяемое поле сохраняется как строка в базе данных. В общем, у вас есть что-то вроде этого:

ext_doc_no    call_record    value
1             1001           Test
2             1001           test2
3             1001           moretest

Я бы хотел запросить обратно:

1001    Test    test2    moretest

Я пытался использовать PIVOT, но это довольно требовательно к таким вещам, как использование агрегатной функции. Любые другие идеи о том, как это сделать?

РЕДАКТИРОВАТЬ: я также пытался запросить каждую строку отдельно в основной запрос и использовать функцию ... но оба метода слишком медленные. Мне нужно что-то, чтобы получить все строки одновременно, PIVOT их, а затем присоединиться к основному запросу.

Ответы [ 5 ]

3 голосов
/ 24 февраля 2009

Попробуйте взглянуть на этот ответ .

Он делает именно то, что вы хотите.

0 голосов
/ 24 февраля 2009

вернуть данные в виде XML

SELECT ...
FROM ...
...JOIN....
FOR XML AUTO
0 голосов
/ 24 февраля 2009

http://www.sqlservercentral.com/scripts/Miscellaneous/32004/

Использование скрипта сверху страницы.


    DECLARE @Values VARCHAR(1000)

    SELECT  @Values = COALESCE(@Values + ', ', '') + Value
    FROM .....
    WHERE ....

    SELECT @ValuesEND

РЕДАКТИРОВАТЬ: Я не хочу быть грубым. Но вы можете найти это, выполнив поиск «объединение нескольких строк в одну».

0 голосов
/ 24 февраля 2009

То, что вы хотите сделать, это сводная точка (некоторые системы называют это кросс-таблицей запросов). Это должно помочь вам Google для получения дополнительной помощи, но обычно вам нужно знать, какие столбцы вы ожидаете до написания запроса.

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