[英]MySQL CASE from another CASE result in SQL query
我有一个很大的查询,其中一部分是:
...
ROUND(AVG(
CASE RA12.answer
WHEN 'L' THEN 3
WHEN 'P' THEN 2
WHEN 'E' THEN 1
ELSE 0
END
),0) as 'avg_presentation_format_raw'
...
...而且一切正常,包括上面的列。 我现在需要做的是在上一列的结果中使用另一个CASE(或其他方式)。 但是,由于它是在运行时计算的,因此我无法引用它。 我猜想我需要使用临时变量或某些东西,但是我发现一些接近的东西,但是没有什么能真正满足我的需求。
除了上面的计算列之外,我还需要以下内容:
...
CASE avg_presentation_format_raw <--THIS WON'T WORK BECAUSE IT'S THE CALCULATED COLUMN
WHEN 3 THEN 'Lecture'
WHEN 2 THEN 'Poster'
WHEN 1 THEN 'Either'
ELSE 'Not Specified'
END as 'presentation_format'
...
任何想法或想法表示赞赏!
TIA
使用子查询,如:
SELECT
CASE t.avg_presentation_format_raw
WHEN 3 THEN 'Lecture'
WHEN 2 THEN 'Poster'
WHEN 1 THEN 'Either'
ELSE 'Not Specified'
END AS 'presentation_format'
(...)
FROM
(
SELECT ROUND(AVG(
CASE RA12.answer
WHEN 'L' THEN 3
WHEN 'P' THEN 2
WHEN 'E' THEN 1
ELSE 0
END),0) AS 'avg_presentation_format_raw'
(...)
FROM (...)
) AS t
或者只是包装一下:
SELECT
CASE ROUND(AVG(
CASE answer
WHEN 'L' THEN 3
WHEN 'P' THEN 2
WHEN 'E' THEN 1
ELSE 0
END
),0)
WHEN 3 THEN 'Lecture'
WHEN 2 THEN 'Poster'
WHEN 1 THEN 'Either'
ELSE 'Not Specified'
END as 'presentation_format',
ROUND(AVG(
CASE RA12.answer
WHEN 'L' THEN 3
WHEN 'P' THEN 2
WHEN 'E' THEN 1
ELSE 0
END),0) AS 'avg_presentation_format_raw'
FROM tab
但是您不能像这样引用:
SELECT
1 AS 'var1'
var1 + 1 AS 'var2'
选择中一行的所有结果都是原子的。 也就是说,您可以将它们全部视为并行发生并且不能相互依赖。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.