| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > аналог sum для строк |
| Автор: Kbl4AH 12.2.2009, 10:59 |
| Добрый день. table: STR | INT ----------- q | 1 w | 2 e | 1 r | 1 t | 2 y | 1 Нужно выбрать значения поля STR, для которых I = const, но чтобы результат был не STR ----- rec1 ... recN , а STR ----- rec1 || ... || recN Например, для выбора STR where INT = 1, результат: STR ----- qery Возможно это? |
| Автор: Zloxa 12.2.2009, 11:05 |
| oracle 6? |
| Автор: Akina 12.2.2009, 11:17 |
| В некоторых диалектах есть функции конкатенации строк для группы (скажем в mySQL это group_concat), в некоторых нет. В тех, где этого нет, для получения такого результата возможно использование хранимых процедур. Опять-таки если оно есть. |
| Автор: v2v 12.2.2009, 11:23 |
| Для Оракла SYS_CONNECT_BY_PATH (Это кажется мне как раз Zloxa и подсказал когда то |
| Автор: Kbl4AH 12.2.2009, 12:02 |
Угу :( Я, конечно, эту проблему уже средствами Делфи обошел... Но вопрос интересный, поэтому хочется услышать решение, не обязательно для 6-ки, а для любой удобной версии... Добавлено через 1 минуту и 9 секунд круто |
| Автор: Zloxa 12.2.2009, 12:43 | ||||||
9i+ 1) Единственный честный способ - http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14289/dciaggfns.htm#sthref566. Требует создания объектов схемы, что не всегда возможно. http://asktom.oracle.com/pls/asktom/f?p=100:11:132921812165416::::P11_QUESTION_ID:229614022562#tom2081176199386 2) не честный через sys_connect_by_path
3) нечестный вариант - через преобразование в XML (можно потерять лидирующие и завершающие пробелы)
10g 4) нечестный вариант - использовать недокументированную функцию wm_concat можно потерять запятые, нельзя указать порядок внутренней сортировки
Наверное есть еще способы |
| Автор: Kbl4AH 12.2.2009, 13:03 |
| Спасибо, Zloxa. +1 за исчерпывающий ответ! Варианты для 9ки и XML для меня пока сложноваты... А для 10ки - понравился, запомню на будущее... |