Присоединять субконсультируется с несколькими линиями в главную консультацию

Я нуждаюсь в том, чтобы присоединить query, который пользователь бросает в доклад статистики по консультациям длинной продолжительности службы в Amazon Redshift (основанный на PostgreSQL). Я получаю этих от следующего способа:

select query as idquery,wlm_start_time as inicio,queue_time as 
tiempo_en_cola_microseg,exec_time as tiempo_ejecucion_microseg, 
(tiempo_en_cola_microseg+tiempo_ejecucion_microseg) as tiempo_total_microseg 
,state as estado,
mod(cast(floor(tiempo_total_microseg/3600000000) as integer),24) || ':' || 
mod(cast(floor(tiempo_total_microseg/60000000) as integer),60) || ':' || 
mod(cast(floor(tiempo_total_microseg/1000000) as integer),60)  as 
duracion_hhmmss,
case tiempo_total_microseg
when tiempo_total_microseg>28800000000
then 'CRITICAL' else 'WARNING'
end as situacion
from stv_wlm_query_state
where tiempo_total_microseg >= 14400000000
order by duracion_hhmmss;

Сейчас, я нуждаюсь в том, чтобы взять поле query и искать весь текст ( select если) в другой таблице:

select * from stl_querytext where query = 1319600;

Проблема состоит в том, что вышеупомянутая консультация бросает следующий результат:

introducir la descripción de la imagen aquí

А именно, решение разделяет ее на несколько последовательностей. Мне нужно, чтобы вся консультация появилась в единственном поле, чтобы это присоединять в консультацию наверху, так как этот результат экспортируется в .CSV

Из какого способа он мог бы делать это?

0
задан 21.03.2019, 16:55
1 ответ

DespuГ©s перечитывания этого несколько раз, я верю в то, что понимаю, что того, в чем ты нуждаешься, объединять все куски поля text, чтобы делать Гєnica query .

Что-то такое что asГ-:

select listagg(text) 
  within group (order by sequence) as fullquery,
from stl_querytext where query = 1319600;

InformaciГіn listagg: https://docs.aws.amazon.com/redshift/latest/dg/r_LISTAGG.html

1
ответ дан 02.12.2019, 05:18
  • 1
    Правильный, одинокий, что necesitarí чтобы перемещать ее из-за каждого query, который я получаю в первой консультации вопроса, для того, чтобы как ú ltimo поле вышло вышеупомянутым text. А именно, в конце концов, deberí чтобы оставаться: idquery inicio tiempo_en_cola_microseg tiempo_ejecucion_microseg tiempo_total_microseg estado duracion_hhmmss situacion text –  lk2_89 21.03.2019, 17:43
  • 2
    Я не захотел осложнить má s ответ. Рекомендуемое serí чтобы делать join из двух подмостков. –  ChemaCortes 21.03.2019, 17:58
  • 3
    это было первым, что intenté но всегда мне давала ошибка. Это был ú ltimo có я говорю, что probé: ... as duracion_hhmmss, listagg(text) within group (order by sequence) as fullquery, case tiempo_total_microseg when tiempo_total_microseg>28800000000 then 'CRITICAL' else 'WARNING' end as situacion from stv_wlm_query_state a, stl_querytext b where a.query=b.query and tiempo_total_microseg >= 14400000000 order by duracion_hhmmss; Ошибка: column " в query" must appear in the GROUP BY clause or be used in an aggregate function –  lk2_89 21.03.2019, 18:09
  • 4
    Sí он понятный. Será лучше создавать вид для того, чтобы не оказался таким сложным query: create temp view fullqueries as select query, listagg(text) within group (order by sequence) as fullquery from stl_querytext. –  ChemaCortes 21.03.2019, 18:33