SELECT (CASE WHEN ymd BETWEEN CURRENT_DATE -4 AND CURRENT_DATE -1 THEN '3day total'
WHEN ymd BETWEEN CURRENT_DATE -11 AND CURRENT_DATE -1 THEN '10day total'
WHEN ymd BETWEEN CURRENT_DATE -31 AND CURRENT_DATE -1 THEN '30day total' END) AS 'Period',
SUM(cost) cost
FROM table
WHERE ymd BETWEEN CURRENT_DATE -31 AND CURRENT_DATE -1
GROUP BY 1
结果实际上似乎给了我第 1-3 天、第 4-10 天和第 11-30 天的时段。我相信这是因为有重叠的条件,一旦满足第一个条件,SQL 就会停止处理 CASE 语句。
我想要的是每个桶的总数(即 3 天总和、10 天总和和 30 天总和)。
有没有办法在不添加额外字段的情况下做到这一点?
PS - 语法与传统 sql 有点不同,因为它是 vsql (vertica)。