不支持子查询中的 presto 多列

presto multiple columns in subquery not supported

我只是想了解一下 presto(和奇怪的 table 结构),但假设我有一个 table 存储这样的数据:

我正在寻找一个查询来获得以下输出:

我尝试使用以下查询来解决这个问题:

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

但是,我一直从查询引擎收到错误 "Multiple columns returned by subquery are not yet supported. Found 2"

是否有任何其他方法可以重写此查询以获得上面所需的输出?

可以自己确认我的两个内部子查询 运行,所以我想这是将它们与我无法理解的其他所有内容混合在一起的情况。

我怀疑你只是想要条件聚合。

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;