Делает Oracle, имеют ее собственную реализацию SQL Server stuff
функция?
Материал позволяет Вам получать одно значение от много выбора строки. Рассмотрите мою ситуацию ниже
ID HOUSE_REF PERSON
1 A Dave
2 A John
3 B Bob
Я хотел бы записать избранный оператор, но я хочу PERSON
имена, чтобы быть в одной строке.
Например, когда я выбираю из этой таблицы, я хочу достигнуть следующего
HOUSE_REF PERSONS
A Dave, John
B Bob
Я не смог найти простое решение до сих пор, это может быть случай записи моей собственной функции для использования, но я не совсем уверен в том, как приблизиться к этому, каким-либо идеям?
Основное бизнес-использование этого, должен будет иметь избранный оператор, который показывает каждый дом, и против того дома, чтобы иметь один столбец, который перечисляет всех, которые живут в том доме. Дом касательно в этом выборе должен быть уникальным, следовательно будучи должен связать людей
Спасибо
Вы можете написать пользовательскую совокупную функцию для этого. Эта строка, которую вы генерируете, ограничен 4K символами.
http://www.sqlsnippets.com/en/topic-111591.html
Есть недокументированная, неподдерживаемая функция wmsys.wm_concat
, чтобы сделать то же самое.
Строка - это своего рода особый случай. Все настоящие примитивные типы (INT, длинные и т. Д.) являются побыточными и реализованы непосредственно в JVM. Строка представляет собой ссылочный тип, и поэтому имел дело с любым другим классом (заглавная буква, пропускной справочник ...), кроме компилятора имеет специальные крючки для того, чтобы иметь дело с ним, как встроенный тип (+ для объединения строки, Например).
Как уже есть ссылочный тип, ему не нужен класс обертки, как целое число, чтобы иметь возможность использовать его как класс (в коллекциях, например)
-121--1706245-Oracle 11.2 включает в себя новую функцию listagg для этого.
До этого вы можете использовать Функция Stragg Tom Kyte .
«Никаких дополнений / без документов без документов» Oracle Solution (до 11.2 как упоминания Тони):
select c1, ltrim(sys_connect_by_path(c2,','),',') persons
from
(
select c1, c2,
row_number() over (partition by c1 order by c2 ) rn
from
(
select house_ref c1, person c2
from housetable
)
)
where connect_by_isleaf=1
connect by prior rn+1 =rn and prior c1 = c1
start with rn=1
;