-1

Following is my query for monthly data.

select
  NVL(MONTH, 'SUM) MONTH
   , sum(A) AS A, sum(B) AS B
 from
  (
    select b.* 
        from TABLE  b
    where b.MONTH between '201305' and '201306'
  )
    group by ROLLUP(MONTH)

I get data like

 |  MONTH  | 

   201305

   201306

But I want the data to be named as below.

  |  MONTH  | 

 2013. 05 MONTH

 2013. 06 MONTH

Can anyone help?

4

1 回答 1

2

简单地使用一个CASE语句怎么样?

SELECT
  CASE WHEN MONTH IS NULL THEN 'SUM'
  ELSE SUBSTR(NVL(MONTH, 'SUM'),1,4) || '. ' || 
       SUBSTR(NVL(MONTH, 'SUM'),5) || ' MONTH' END MONTH
   , SUM(A) AS A, SUM(B) AS B
FROM
  (
    SELECT b.* 
        FROM  b
    WHERE b.MONTH BETWEEN '201305' AND '201306'
  )
GROUP BY ROLLUP(MONTH)

一个用于测试的 SQLfiddle

于 2013-07-16T04:44:25.990 回答