|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
Всем привет !!! Искал поиском - не нашел. FB - v 2.1.3 Подскажите пожалуйста - есть таблица - поля - id, ab_id (л/с абонента), post_id (это должность), email. Собственно говоря - для каждого л/с - есть список должностей - для каждой должности свой email, который может быть null . Как мне вывести в одну строку для каждого л/с - список всех email ??? Есть процедура - но что-то как-то не так - выдает для каждой должности отдельную строку и не выводит в одну. SET TERM ^ ; create or alter procedure A_R_SPIS_EMAIL_2 returns ( EMAIL_1 varchar(60)) as declare variable EMAIL varchar(60); begin email='*****'; email_1='*****'; --for select abpo2.email || ',,' || case when abpo2.email <> '' then abpo2.email || ',,' || ascii_char(10) else abpo2.email end --for select cast(left(abpo2.email, 600) as varchar (600)) --for select abpo2.email || ',,' --for select :email_1 || ',,' || --case when abpo2.email <> '' then abpo2.email || ',,' || ascii_char(10) else '' end --for select (case when abpo2.email <> '' then abpo2.email || ',,' || ascii_char(10) else '' end) for select :email_1 || ',,' || case when abpo2.email <> '' then abpo2.email || ',,' || ascii_char(10) else '' end from tb_abon_posts abpo2 where abpo2.id in (select abpo.id from tb_abon_posts abpo where abpo.abonent_id = 54 and abpo.email is not null and abpo.email <> '' ) --group by abpo2.email into :email_1 do --FOR SELECT coalesce(abpo.email,'') from tb_abon_posts abpo WHERE abpo.abonent_id = 54 and abpo.post_id = 1 INTO :email_1 DO --suspend; begin --email = :email_1 || ',,' || ascii_char(10); email_1 = :email_1 || ',,' || ascii_char(10); suspend; end --suspend; end^ SET TERM ; ^ Arithmetic overflow or division by zero has occurred, arithmetic exception, numeric over flow, or string truncation. At procedure A_R_SPIS_EMAIL_2 line 35, column 9 --------------------------------------------------------------- Извините за длинный текст процедуры. Прям не знаю что делать. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 10:31 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
winner777, 1. не в ту ветку написал 2. результат не поместился в EMAIL... ибо тут только 60 символов 3. Возможно LIST тебе поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 10:35 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
m7mwinner777, 1. не в ту ветку написал 2. результат не поместился в EMAIL... ибо тут только 60 символов 3. Возможно LIST тебе поможет Спасибо. Не та ветка - точно - пожалуйста перенесите если можно в ветку - firebird. Не поместился результат - не подумал - как-то больше ударился в ошибку в написании кода - опыта мало. LIST - помогает - но не могу вывести в эксель - через копировать записи в буфер обмена в IBExpert`e - для дальнейшей работы. Спасибо за ответ. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 11:07 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
Список в одну строку появляется, только максимум email появляется в последней должности. Т.е. у одного лс - есть 7 должностей, выводит 7 строк - на каждой увеличивающийся email - post email 1 ,,1@ru.ru,,,, 2 ,,1@ru.ru,,,,2@ru.ru,,,, 3 ,,1@ru.ru,,,,2@ru.ru,,,,3@ru.ru,,,, 4 ,,1@ru.ru,,,,2@ru.ru,,,,3@ru.ru,,,,4@ru.ru,,,, .................................................................................................... Как мне получить только 1 строку содержащую все email ??? Спасибо. Модератор: Тема перенесена из форума "IBExpert". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 11:25 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
winner777 Как мне получить только 1 строку содержащую все email ??? suspend; делай после обработки лицевого а не после обработки каждой должности ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:24 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
копируй записи в формате таблица HTML или таблица RTF - и в таком формате вставляй в Ёксель ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:57 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
Ariochкопируй записи в формате таблица HTML или таблица RTF - и в таком формате вставляй в Ёксель Эка тебя на таблицы RTF\HTML пробило-то ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 15:12 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
DarkMaster, Это народ на копипаст многострочников в Ёксель пробило.... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 15:33 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
Спасибо всем. m7mwinner777 Как мне получить только 1 строку содержащую все email ??? suspend; делай после обработки лицевого а не после обработки каждой должности Ariochкопируй записи в формате таблица HTML или таблица RTF - и в таком формате вставляй в Ёксель Вам отдельное спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 09:52 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
Самый простой и быстрый вариант это list - select list (abpo.email,',') ,abpo.abonent_id from tb_abon_posts abpo where abpo.email is not null and abpo.email <> '' group by 2 Для передачи в эксель данной выборки надо было всего лишь поставить - V - Export text BLOB values А процедуру до ума доведу - отпишусь. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 09:57 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
winner777, в новых версиях сервера ЕМНИП list больше не всегда BLOB ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 10:44 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
Всем привет !!! Воспользовался текстом другой процедуры, написанной старшими и более опытными товарищами. Для меня была непонятка - как взять каждый емайл для каждого абонента - Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Для себя уяснил - нужен вложенный for select. Только изначально я его писал не согласно правилам написания. Теперь остались вопросы - 1. после каждого последнего адреса емайл - ставиться "запятая" - какой код надо написать, чтобы убрать эту запятую ??? (например: 111@111.ru, 222@222.ru,) 2. если убираю условие - abpo.email <> '' - в результат выводится NULL - без хотя бы даже одного емайла - не понятно почему - объясните пожалуйста это условие. (изначально поле email в таблице tb_abon_posts - varchar(60), может быть null) Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2016, 10:02 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
winner777, если по чесноку, то код отстой. Чем встроенная функция list не устроила? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2016, 10:08 |
|
Список email из столбца в одну строку
|
|||
---|---|---|---|
#18+
winner777 1. после каждого последнего адреса емайл - ставиться "запятая" - какой код надо написать, чтобы убрать эту запятую ??? (например: 111@111.ru, 222@222.ru,) Код: sql 1. 2.
winner7772. если убираю условие - abpo.email <> '' - в результат выводится NULL - без хотя бы даже одного емайла - не понятно почему - объясните пожалуйста это условие. (изначально поле email в таблице tb_abon_posts - varchar(60), может быть null) Потому что Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2016, 10:15 |
|
|
start [/forum/topic.php?fid=40&msg=39283723&tid=1562021]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 20ms |
total: | 161ms |
0 / 0 |