SQL для объединения всех строк запроса в одну строку - PullRequest
0 голосов
/ 03 мая 2019

Я видел следующие вопросы, но не могу заставить их работать на то, что я ищу.

Как можно объединить несколько строк в одну в Oracle без создания хранимой процедуры?

SQL-запрос для объединения значений столбцов из нескольких строк в Oracle

Я использую Oracle и хотел бы, чтобы решение не имело pl-Sql.

Я пытаюсь заставить запрос выглядеть так с возможной новой строкой для каждой строки и разделенной | или запятая:

Набор данных:

question_id    element_message    date
--------------------------------------------
1              hello              10/10/19
2              goodbye            11/11/19

Желаемый результат запроса в одну строку:

1 | hello  | 10/10/19 --new line added in query(if possible)
2 | goodbye| 11/11/19

А если новая строка в запросе невозможна:

Желаемый результат:

1 | hello  | 10/10/19 | 2 | goodbye| 11/11/19 |

* EDIT Чтобы уточнить, почему я использую это. Я использую инструмент под названием Geneos с ограничением строки за строкой с точки зрения запуска электронной почты. Так что это хак, чтобы вызвать одно электронное письмо для всех строк за этот день.

Ответы [ 3 ]

1 голос
/ 03 мая 2019

Решение SQL Server: вы можете решить его, используя self join , как показано ниже:

select top 1 CONCAT(d1.question_id, ' | ', d1.element_message, ' | ', d1.date, 
'|' d2.question_id, ' | ', d2.element_message, ' | ', d2.date) 
from data d1 join data d2 on (d1.question_id < d2.question_id and)
1 голос
/ 03 мая 2019

Зачем вам нужен запрос на одну строку, если вы хотите, чтобы каждая строка печаталась на другой строке?

Если вы просто хотите выполнить запрос, который возвращает ваши данные без заголовка или разделителя страниц, используйте это:

set pagesize 0
select  question_id || '|' || element_message || '|' || date from your_table;
0 голосов
/ 03 мая 2019

Это то, что вы ищете?

SELECT CONCAT(question_id, ' | ', element_message, ' | ', date) FROM Data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...