Presto несколько столбцов в подзапросе не поддерживается - PullRequest
1 голос
/ 24 апреля 2020

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

Table1

I ' Я хочу написать запрос, чтобы получить следующее:

required output

Я пытался пройти через этот запрос:

SELECT DISTINCT

ts.id,

(SELECT
ts.trial_type,
ts.trial_score

FROM trial_scores ts

WHERE ts. = 12345678
AND ts.date = date_format(date_add('day', -3, CURRENT_DATE), '%Y-%m-%d')) as previous_score,

(SELECT
ts.trial_type,
ts.trial_score

FROM trial_scores ts

WHERE ts. = 12345678
AND ts.date = date_format(date_add('day', -2, CURRENT_DATE), '%Y-%m-%d')) as current_score

FROM trial_scores ts

Тем не менее, я получаю сообщение об ошибке от Query Engine: «Несколько столбцов, возвращаемых подзапросом, еще не поддерживаются. Найдено 2»

Существуют ли другие способы переписать этот запрос, чтобы получить желаемый результат выше ?

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

1 Ответ

1 голос
/ 24 апреля 2020

Я подозреваю, что вы просто хотите условную агрегацию.

SELECT ts.id,
       MAX(CASE WHEN ts.date = date_format(date_add('day', -3, CURRENT_DATE), '%Y-%m-%d') THEN ts.trial_type END) as prev_trial_type,
       MAX(CASE WHEN ts.date = date_format(date_add('day', -3, CURRENT_DATE), '%Y-%m-%d') THEN ts.trial_scoree END) as prev_trial_score,
       MAX(CASE WHEN ts.date = date_format(date_add('day', -2, CURRENT_DATE), '%Y-%m-%d') THEN ts.trial_type END) as curr_trial_type,
       MAX(CASE WHEN ts.date = date_format(date_add('day', -2, CURRENT_DATE), '%Y-%m-%d') THEN ts.trial_scoree END) as curr_trial_score
FROM trial_scores ts
GROUP BY ts.id;
...