Форматирование результата запроса - PullRequest
1 голос
/ 25 мая 2019

Допустим, у меня есть один запрос, который возвращает column1, column2.Я хотел бы иметь возможность отформатировать результат для желаемого результата в Oracle.

Я хочу испортить строки, поэтому я задаю этот вопрос ~~.

create table taTest(
column1 varchar(50),
column2 varchar(50)
)

это основной запрос, из которого я хочу отформатировать результат:

select distinct(column1),column2 from taTest;

desired output(for each query result) : column1value(column2value)

Я пробовал что-то вроде этого:

select wm_concat(distinct(column1)||'('||column2||')') as result  from taTest;

Но похоже, что я 'я не правильно использую wm_concat.

Спасибо за любой вклад, который вы можете предоставить.

1 Ответ

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

Это distinct(column1), column2 - одна из самых больших ошибок, которые я видел. Потому что это так же, как

select distinct column1, column2. . .

Следовательно, все, что вам нужно, это

select
    column1 || '('|| column2 || ')' as result
from
    taTest
group by
    column1, column2;

В этом случае group by и distinct выполняют одну и ту же функцию

Возвращаясь к distinct(column1) - это ложная функция. Правило синтаксического анализа SQL заключается в том, что все, что находится внутри ( ), считается одним словом \ группой. Следовательно, (column1) отделяется от distinct, используя () против пустого пространства - то же самое. Вы можете сделать

select distinct (column1), (column2) . . -- same thing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...