【发布时间】:2012-03-19 15:07:56
【问题描述】:
假设我们有下表:
索引值 1 55 2 66 3 77 1 88 3 99
如何在一个 select 语句中当 index=1 或 index=3 时 sum(value) 和 index=2 时 avg(value)?
【问题讨论】:
-
您的预期结果是什么(表格形式)?
假设我们有下表:
索引值 1 55 2 66 3 77 1 88 3 99
如何在一个 select 语句中当 index=1 或 index=3 时 sum(value) 和 index=2 时 avg(value)?
【问题讨论】:
轻松:
SELECT index, CASE WHEN index IN (1, 3) THEN SUM(value) ELSE AVG(value) END
FROM yourTable
GROUP BY index
【讨论】:
SELECT sum(value) as agg,
'S' as aggregateType
FROM DaTAble
WHERE index IN (1, 3)
UNION ALL
SELECT avg(value) as agg,
'A' as aggregateType
FROM DaTAble
WHERE index = 2
【讨论】: