【发布时间】:2017-02-27 12:26:48
【问题描述】:
我的代码写成:
SELECT name, age,
CASE WHEN abs(10 - mean(valueLeft)) < abs(10 - mean(valueRight)) THEN stddev(valueLeftMagnitude) ELSE stddev(valueRightMagnitude) END as value1,
CASE WHEN abs(10 - mean(valueLeft)) < abs(10 - mean(valueRight)) THEN mean(valueLeftMagnitude) ELSE mean(valueRightMagnitude) END as value2,
CASE WHEN abs(10 - mean(valueLeft)) < abs(10 - mean(valueRight)) THEN median(valueLeftMagnitude) ELSE median(valueRightMagnitude) END as value3
FROM table
GROUP BY name, age
由于所有三个 CASE 中的 WHEN 语句都是相同的,我不想重复它们。有什么办法吗?
示例:我想要类似 -
SELECT name, age,
CASE WHEN abs(10 - mean(valueLeft)) < abs(10 - mean(valueRight))
THEN stddev(valueLeftMagnitude) ELSE stddev(valueRightMagnitude) END as value1,
THEN mean(valueLeftMagnitude) ELSE mean(valueRightMagnitude) END as value2,
THEN median(valueLeftMagnitude) ELSE median(valueRightMagnitude) END as value3
FROM table
GROUP BY name, age
请帮忙。
【问题讨论】:
-
没有。剪切&粘贴&修改。
-
标记您的 DBMS。 sql-server 有交叉应用,在这里可以很方便。
-
嵌入式选择也很有用,即嵌入式查询进行计算,外部查询进行选择。