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 - vsql (vertica) であるため、構文は従来の sql とは少し異なります。