不支持子查询中的 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;
我只是想了解一下 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;