Как я могу вернуть несколько строк как одну в T-SQL?

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

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

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

1001    Test    test2    moretest

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

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

Ответов (5)

Решение

Попробуйте посмотреть на этот ответ .

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

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

См. Здесь Объединение значений из нескольких строк в один столбец Упорядоченный SQL 2005+

или для версии 2000 года объединить значения из нескольких строк в один столбец

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

SELECT ...
FROM ...
...JOIN....
FOR XML AUTO

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

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

    ОБЪЯВИТЬ @Values ​​VARCHAR (1000)

    ВЫБЕРИТЕ @Values ​​= COALESCE (@Values ​​+ ',', '') + Значение
    ИЗ .....
    КУДА ....

    ВЫБРАТЬ @ValuesEND

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